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

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

Started by Aug 08 2014 08:05 AM

,
4 replies to this topic

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.**

Master & Mentor

https://sites.google.com/site/customprog/

https://sites.google.com/site/customprog/

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.**

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) { x = CircleRadius*cosl(angle*imopild); y = CircleRadius*sinl(angle*imopild); 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 vecx = CircleRadius * cosl((angle)*imopild); vecy = CircleRadius * sinl((angle)*imopild); 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) ); avecx = CircleRadius * cosl((angler1)*imopild); avecy = CircleRadius * sinl((angler1)*imopild); bvecx = CircleRadius * cosl((angler2)*imopild); bvecy = CircleRadius * sinl((angler2)*imopild); 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.**

Master & Mentor

https://sites.google.com/site/customprog/

https://sites.google.com/site/customprog/