• Create Account

## Triangle vectors on the circle

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

4 replies to this topic

### #1WiredCat  Members

1341
Like
0Likes
Like

Posted 08 August 2014 - 08:05 AM

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

Edited by WiredCat, 08 August 2014 - 10:06 AM.

### #2Buckeye  GDNet+

10739
Like
0Likes
Like

Posted 08 August 2014 - 08:41 AM

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.

### #3Álvaro  Members

20268
Like
0Likes
Like

Posted 08 August 2014 - 08:58 AM

### #4Álvaro  Members

20268
Like
1Likes
Like

Posted 08 August 2014 - 08:59 AM

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, 08 August 2014 - 09:01 AM.

### #5WiredCat  Members

1341
Like
1Likes
Like

Posted 08 August 2014 - 10:11 AM

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, 08 August 2014 - 11:11 AM.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.