@@ -508,6 +508,8 @@ void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float h
508
508
{
509
509
if (sides < 3 ) sides = 3 ;
510
510
511
+ const float angleStep = 360.0f /sides ;
512
+
511
513
rlPushMatrix ();
512
514
rlTranslatef (position .x , position .y , position .z );
513
515
@@ -517,43 +519,44 @@ void DrawCylinder(Vector3 position, float radiusTop, float radiusBottom, float h
517
519
if (radiusTop > 0 )
518
520
{
519
521
// Draw Body -------------------------------------------------------------------------------------
520
- for (int i = 0 ; i < 360 ; i += 360 / sides )
522
+ for (int i = 0 ; i < sides ; i ++ )
521
523
{
522
- rlVertex3f (sinf (DEG2RAD * i )* radiusBottom , 0 , cosf (DEG2RAD * i )* radiusBottom ); //Bottom Left
523
- rlVertex3f (sinf (DEG2RAD * (i + 360.0f / sides ) )* radiusBottom , 0 , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusBottom ); //Bottom Right
524
- rlVertex3f (sinf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop , height , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop ); //Top Right
524
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * i * angleStep )* radiusBottom ); //Bottom Left
525
+ rlVertex3f (sinf (DEG2RAD * (i + 1 ) * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusBottom ); //Bottom Right
526
+ rlVertex3f (sinf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop , height , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop ); //Top Right
525
527
526
- rlVertex3f (sinf (DEG2RAD * i )* radiusTop , height , cosf (DEG2RAD * i )* radiusTop ); //Top Left
527
- rlVertex3f (sinf (DEG2RAD * i )* radiusBottom , 0 , cosf (DEG2RAD * i )* radiusBottom ); //Bottom Left
528
- rlVertex3f (sinf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop , height , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop ); //Top Right
528
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusTop , height , cosf (DEG2RAD * i * angleStep )* radiusTop ); //Top Left
529
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * i * angleStep )* radiusBottom ); //Bottom Left
530
+ rlVertex3f (sinf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop , height , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop ); //Top Right
529
531
}
530
532
531
533
// Draw Cap --------------------------------------------------------------------------------------
532
- for (int i = 0 ; i < 360 ; i += 360 / sides )
534
+ for (int i = 0 ; i < sides ; i ++ )
533
535
{
534
536
rlVertex3f (0 , height , 0 );
535
- rlVertex3f (sinf (DEG2RAD * i )* radiusTop , height , cosf (DEG2RAD * i )* radiusTop );
536
- rlVertex3f (sinf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop , height , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop );
537
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusTop , height , cosf (DEG2RAD * i * angleStep )* radiusTop );
538
+ rlVertex3f (sinf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop , height , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop );
537
539
}
538
540
}
539
541
else
540
542
{
541
543
// Draw Cone -------------------------------------------------------------------------------------
542
- for (int i = 0 ; i < 360 ; i += 360 / sides )
544
+ for (int i = 0 ; i < sides ; i ++ )
543
545
{
544
546
rlVertex3f (0 , height , 0 );
545
- rlVertex3f (sinf (DEG2RAD * i )* radiusBottom , 0 , cosf (DEG2RAD * i )* radiusBottom );
546
- rlVertex3f (sinf (DEG2RAD * (i + 360.0f / sides ) )* radiusBottom , 0 , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusBottom );
547
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * i * angleStep )* radiusBottom );
548
+ rlVertex3f (sinf (DEG2RAD * (i + 1 ) * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusBottom );
547
549
}
548
550
}
549
551
550
552
// Draw Base -----------------------------------------------------------------------------------------
551
- for (int i = 0 ; i < 360 ; i += 360 / sides )
553
+ for (int i = 0 ; i < sides ; i ++ )
552
554
{
553
555
rlVertex3f (0 , 0 , 0 );
554
- rlVertex3f (sinf (DEG2RAD * ( i + 360.0f / sides )) * radiusBottom , 0 , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusBottom );
555
- rlVertex3f (sinf (DEG2RAD * i )* radiusBottom , 0 , cosf (DEG2RAD * i )* radiusBottom );
556
+ rlVertex3f (sinf (DEG2RAD * i * angleStep ) * radiusBottom , 0 , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusBottom );
557
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * i * angleStep )* radiusBottom );
556
558
}
559
+
557
560
rlEnd ();
558
561
rlPopMatrix ();
559
562
}
@@ -623,25 +626,27 @@ void DrawCylinderWires(Vector3 position, float radiusTop, float radiusBottom, fl
623
626
{
624
627
if (sides < 3 ) sides = 3 ;
625
628
629
+ const float angleStep = 360.0f /sides ;
630
+
626
631
rlPushMatrix ();
627
632
rlTranslatef (position .x , position .y , position .z );
628
633
629
634
rlBegin (RL_LINES );
630
635
rlColor4ub (color .r , color .g , color .b , color .a );
631
636
632
- for (int i = 0 ; i < 360 ; i += 360 / sides )
637
+ for (int i = 0 ; i < sides ; i ++ )
633
638
{
634
- rlVertex3f (sinf (DEG2RAD * i )* radiusBottom , 0 , cosf (DEG2RAD * i )* radiusBottom );
635
- rlVertex3f (sinf (DEG2RAD * (i + 360.0f / sides ) )* radiusBottom , 0 , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusBottom );
639
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * i * angleStep )* radiusBottom );
640
+ rlVertex3f (sinf (DEG2RAD * (i + 1 ) * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusBottom );
636
641
637
- rlVertex3f (sinf (DEG2RAD * (i + 360.0f / sides ) )* radiusBottom , 0 , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusBottom );
638
- rlVertex3f (sinf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop , height , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop );
642
+ rlVertex3f (sinf (DEG2RAD * (i + 1 ) * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusBottom );
643
+ rlVertex3f (sinf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop , height , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop );
639
644
640
- rlVertex3f (sinf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop , height , cosf (DEG2RAD * (i + 360.0f / sides ) )* radiusTop );
641
- rlVertex3f (sinf (DEG2RAD * i )* radiusTop , height , cosf (DEG2RAD * i )* radiusTop );
645
+ rlVertex3f (sinf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop , height , cosf (DEG2RAD * (i + 1 ) * angleStep )* radiusTop );
646
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusTop , height , cosf (DEG2RAD * i * angleStep )* radiusTop );
642
647
643
- rlVertex3f (sinf (DEG2RAD * i )* radiusTop , height , cosf (DEG2RAD * i )* radiusTop );
644
- rlVertex3f (sinf (DEG2RAD * i )* radiusBottom , 0 , cosf (DEG2RAD * i )* radiusBottom );
648
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusTop , height , cosf (DEG2RAD * i * angleStep )* radiusTop );
649
+ rlVertex3f (sinf (DEG2RAD * i * angleStep )* radiusBottom , 0 , cosf (DEG2RAD * i * angleStep )* radiusBottom );
645
650
}
646
651
rlEnd ();
647
652
rlPopMatrix ();
0 commit comments