Note that there are some explanatory texts on larger screens.

plurals
  1. PODoesn't move and rotate the triangle around a point - C Bgi graphics
    primarykey
    data
    text
    <p>Greeting,</p> <p>I have this graphic homework in BGI graphic. We must use DevCPP and BGI, and matrices.</p> <p>I wrote this code, and I think the transformations is good. But my triangle doesn't move and rotate around the circle, And I don't understand, why not it moves around the circle...</p> <p>I don't know where and what I have to rewrite.</p> <pre><code>#include &lt;math.h&gt; #include "graphics.h" #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #define PI 3.14159265 typedef float Matrix3x3[3][3]; Matrix3x3 theMatrix; int Round( double n ){ return (int)( n + 0.5 ); } void matrix3x3SetIdentity(Matrix3x3 m) { int i, j; for(i=0; i&lt;3; i++) for(j=0; j&lt;3;j++) m[i][j]=(i==j); } /* Multiplies matrix, result in b matrix */ void matrix3x3PreMultiply(Matrix3x3 a, Matrix3x3 b) { int r, c; Matrix3x3 tmp; for(r=0; r&lt;3;r++) for(c=0; c&lt;3;c++) tmp[r][c]= a[r][0]*b[0][c]+a[r][1]*b[1][c]+a[r][2]*b[2][c]; for(r=0; r&lt;3;r++) for(c=0; c&lt;3; c++) b[r][c]-tmp[r][c]; } void translate2(int tx, int ty) { Matrix3x3 m; matrix3x3SetIdentity (m); m[0][2] = tx; m[1][2] = ty; matrix3x3PreMultiply(m, theMatrix); } void scale2 (float sx, float sy, pont2d refpt) { Matrix3x3 m; matrix3x3SetIdentity(m); m[0][0]=sx; m[0][2]=(1-sx)*refpt.x; m[1][1]=sy; m[1][2]=(1-sy)*refpt.y; matrix3x3PreMultiply(m, theMatrix); } void rotate2 (float a, pont2d refpt) { Matrix3x3 m; matrix3x3SetIdentity(m); a=a/PI; m[0][0] = cosf(a); m[0][1] = -sinf(a); m[0][2] = refpt.x * (1-cosf(a)) + refpt.y * sinf(a); m[1][0] = sinf (a); m[1][1] = cosf (a); m[1][2] = refpt.y * (1-cosf(a)) - refpt.x * sinf(a); matrix3x3PreMultiply(m, theMatrix); } void transformPoints2 (int npts, pont2d *pts) { int k; float tmp; for (k = 0; k &lt; npts; k++) { tmp = theMatrix[0][0] * pts[k].x + theMatrix[0][1] * pts[k].y + theMatrix[0][2]; pts[k].y = theMatrix[1][0] * pts[k].x + theMatrix[1][1] * pts[k].y + theMatrix[1][2]; pts[k].x = tmp; } } int main() { int gd, gm, i, page=0; gd=VGA;gm=VGAHI; initgraph(&amp;gd,&amp;gm,""); int ap; while(!kbhit()) { setactivepage(page); cleardevice(); pont2d P[3] = { 50.0, 50.0, 150.0, 50.0, 100.0, 150.0}; pont2d refPt = {200.0, 250.0}; // Drawing the Triangle moveto( Round( P[ 0 ].x ), Round( P[ 0 ].y ) ); for( i = 1; i &lt; 3; i++ ) lineto( Round( P[ i ].x ), Round( P[ i ].y ) ); lineto( Round( P[ 0 ].x ), Round( P[ 0 ].y ) ); // Drawing the Circle fillellipse(200, 250, 5,5); setcolor (BLUE); matrix3x3SetIdentity (theMatrix); scale2 (0.5, 0.5, refPt); //scale2 (20, 20, refPt); rotate2 (90.0, refPt); translate2 (0, 150); transformPoints2 (3, P); setvisualpage(page); page = 1-page; } getch(); closegraph(); return 0; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload