# Triangle vectors on the circle

This topic is 1263 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

So anyone knows how to find vectors for these blue lines?

Edited by WiredCat

##### Share on other sites
Take the average direction of the two red lines and rotate it 15 degrees to each side to get the directions of the blue lines. [EDIT: Perhaps I didn't understand what you mean by "are angled at 30 degrees". Please tell draw the angles you are talking about.] Edited by Álvaro

##### Share on other sites

ofc every blue line is angled at 30 degrees. geez i forgot to draw a bottom line of that triangle (that with blue lines since its a cut triangle) so it looks that angles are from circle itself to segment.

I could build up a matrix where red line unit vec is front z+ is up vector and crossproduct of these two is right vec then i could just yaw it. But i am looking for easier solution

just was looking at this and you are right alvaro  making average of these two red lines and making a full trianglei can rotate this avg red line by 30 degs, thanks

OK I will gladly post a solution



Graphics::TBitmap * bmp =      new               Graphics::TBitmap;

bmp->PixelFormat = pf24bit;

bmp->Width  = 1000;

bmp->Height = 1000;

int bmpcx = bmp->Width / 2;

int bmpcy = bmp->Height / 2;

long double angle = 0.0;

long double scale = 60.0;

//cm

long double CircleRadius = 6.0*scale;// 6 * 60 = 360 pixels of radius / diameter 720 pixels

long double x;

long double y;

long double numofteeth = 16;

long double circumreference = 2.0 * pild * CircleRadius;

long double teethwidth = circumreference / numofteeth;

long double teethheight = 1.0 * scale; //1 cm height

int i;

for (angle=0; angle <360; angle= angle + 0.1)

{

bmp->Canvas->Pixels[bmpcx+int(x)][bmpcy+int(y)] = clBlack;

}

int reach = int(numofteeth);

long double tmp = 0;

long double angler1 = 0;

long double angler2 = 0;

long double vecx;

long double vecy;

long double avecx;

long double avecy;

long double bvecx;

long double bvecy;

TPoint A,B,C;

t3dpoint vec; vec.z = 0.0;

t3dpoint vecb; vecb.z = 0.0;

for (i=0; i < reach; i++)

{

angler1 = 360.0 * ( tmp / circumreference );

angler2 = 360.0 * ( (tmp+teethwidth) / circumreference );

tmp = tmp + teethwidth;

angle = (angler1 + angler2) / 2.0;

//lets say add 30 degs to it so triangle will have 60 30 30

vec.x = float(vecx);

vec.y = float(vecy);

vec.z = 0.0f;

vec = Normalize(vec);

vecx = vecx + ( (long double)vec.x * (teethwidth / 2.0) );

vecy = vecy + ( (long double)vec.y * (teethwidth / 2.0) );

C.x = int(vecx);

C.y = int(vecy);

A.x = int(avecx);

A.y = int(avecy);

B.x = int(bvecx);

B.y = int(bvecy);

bmp->Canvas->Brush->Style = bsSolid;

bmp->Canvas->Brush->Color = clBlack;

bmp->Canvas->MoveTo(bmpcx+C.x,bmpcy+C.y);

bmp->Canvas->LineTo(bmpcx+A.x,bmpcy+A.y);

bmp->Canvas->MoveTo(bmpcx+C.x,bmpcy+C.y);

bmp->Canvas->LineTo(bmpcx+B.x,bmpcy+B.y);

}

bmp->SaveToFile("E:\\FFS_WTF.bmp");


result

Edited by WiredCat