Previous Next Up Title Contents Index Functions Index Top Library

1.7.3. DRAWING A CIRCLE WITH 2 LINEAR AXES

/* include file containing the "define" and types specific to PHIGURE */
#include <phigure.h>

main () {

	Pfloat zoom=0.8, circle_radius = 5.0;
	Pint ws_id = 1, view_ind = 1,
	scene_id = 10, circle_id = 11, x_axis_id=12, y_axis_id=13;
	Tcircle circle;

	static Plimit viewport ={0.,1., 0., 1.}, domain ={10., 20., 10., 20. };
	static Ppoint circle_center = {15., 15.}, view_center = {0.5, 0.5};
	static Ppoint3 axis_orig = {10.0,10.0,0.0};

	static Pint struct_ids[3];
	static Pint_list struct_id_list = {3, struct_ids};

/* open PHIGURE and an X-Window type workstation (8887) */
	topen_phigure (PDEF_ERR_FILE);
	topen_ws (ws_id, PDEF_ERR_FILE, 8887);

/* define domain */
	tdomain (&domain);

/* build circle */
	circle.type = TCENTER_RADIUS;
	circle.geometry.cr.r = circle_radius;
	circle.geometry.cr.c = circle_center;
	tcircle (circle_id, &circle);

/* build 2 axes */
	txy_linear_axis (x_axis_id, &axis_orig, 20.0, 0.0);
	tyx_linear_axis (y_axis_id, &axis_orig, 20.0, 0.0);

/* define scene */
	struct_ids[0] = circle_id;
	struct_ids[1] = x_axis_id;
	struct_ids[2] = y_axis_id;
	tscene (scene_id, &struct_id_list, view_ind);

/* define a centered 2D view */
	tview2_center (ws_id, view_ind, &view_center, zoom, &viewport);

/* display scene on workstation */
	ppost_struct (ws_id, scene_id, 1.0);
	predraw_all_structs (ws_id, PFLAG_ALWAYS);

/* close workstation and phigure */
	tclose_ws (ws_id);
	tclose_phigure ();

}

This program is identical to n° 1 with display on 2 axes. Note that, as the graduated axes are outside the domain, the zoom must be reduced slightly to display them on the workstation.


Previous Next Up Title Contents Index Functions Index Top Library