﻿ Examples > Primitives > Arcs

Arcs.

Let's create an array of the arcs with centers lying on a circle.

Let the variation interval of the angle moving along the circle be from 0 to Pi.

Let the variation angle step be equal to 0.8 radians.

We'll draw arcs from three points - two end points and the one lying on the arc.

The end points will lie on a circle with the Z center coordinate equal to 0 and radius equal to 5, and the arc middle point will lie on a circle with the Z center coordinate equal to 3 and radius equal to 7.

Let's calculate the color, thickness and styles of the arcs on the following formulas:

arc color number from palette =  residue of division integer part (10*angle) by 200+50;

arc thickness = residue of division integer part (10*angle) by 5;

arc style number =  residue of division integer part (10*angle) by 5;

So, the function of creating the necessary line segments array will look like this:

for (double i=0.0;i<2.0*3.14159265;i+=0.8)

{

SG_POINT   arP1 = {5.0*cos(i),5.0*sin(i),0.0};

SG_POINT   arP2 = {5.0*cos(i+0.4),5.0*sin(i+0.4),0.0};

SG_POINT   arP3 = {7.0*cos(i+0.2),7.0*sin(i+0.2),3.0};

SG_ARC     arGeo;

if (arGeo.FromTreePoints(arP1, arP2, arP3,false))

{

sgCArc* ar = sgCreateArc(arGeo);

if (ar)

{

sgGetScene()->AttachObject(ar);

ar->SetAttribute(SG_OA_COLOR,((int)(10*i))%200+50);

ar->SetAttribute(SG_OA_LINE_THICKNESS, ((int)(10*i))%5);

ar->SetAttribute(SG_OA_LINE_TYPE, ((int)(10*i))%5);

}

}

}