#include <stdlib.h>
#include <math.h>
#include <time.h>
typedef struct {//MEMBUAT VARIABEL
float e[];
float mY[4][4];
}
VEKTOR,MATRIK;
typedef struct{
double x;
double y;
}TITIK;
typedef struct{
double red,green,blue;
}WARNA;
void setColor(WARNA col){
glColor3f(col.red,col.green,col.blue);//metode pewarnaan
}
VEKTOR operator * (MATRIK a, VEKTOR b)
{
VEKTOR c;
int i,j;
for (i=0;1<3;i++){
c.e[i]=0;
for (j=0;j<3;j++)
c.e[i]+=a.mY[i][j]*b.e[j];
}
return c;
}
VEKTOR titikV(TITIK pnt,TITIK transPoint)
{
VEKTOR vec;
vec.e[0]=pnt.x - transPoint.x;
vec.e[1]=pnt.y - transPoint.y;
vec.e[2]=1.;
return vec;
}
TITIK vector2point(VEKTOR vec,TITIK transPoint)
{
TITIK pnt;
pnt.x=vec.e[0] + transPoint.x;
pnt.y=vec.e[1] + transPoint.y;
return pnt;
}
void transform2D(TITIK p[], MATRIK mat, int n,float xCentre, float yCentre){
VEKTOR vec;
TITIK transPoint;
transPoint.x= xCentre;
transPoint.y= yCentre;
for (int i=0; i<n; i++){
vec=titikV (p[i],transPoint);
vec=mat*vec;
p[i]=vector2point (vec,transPoint);
}
}
void Line(double x1, double y1, double x2, double y2){
glBegin(GL_LINES);
glVertex2d(x1,y1);
glVertex2d(x2,y2);
glEnd();
}
void hujan(){
static TITIK hjn[295];
static int bunyi=0;
int i;
if(bunyi==0){
for (i=0;i<295;i++){
hjn[i].x=rand()%10000;
hjn[i].y=rand()%10000;
}
}
for (i=0;i<295;i++){
hjn[i].x-=1;
hjn[i].y-=1;
if (hjn[i].x<0||hjn[i].y<0){
hjn[i].x=rand()%800;
hjn[i].y=rand()%600;
}
}
glColor3f(1,1,1);
for (i=0;i<200;i++){
Line(hjn[i].x, hjn[i].y, hjn[i].x-4, hjn[i].y-2);
}
bunyi++;
}
void display (void){
glClear (GL_COLOR_BUFFER_BIT);
hujan();
glutSwapBuffers();
}
int main(int argc,char **argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowPosition(100,100);
glutInitWindowSize(800,600);
glutCreateWindow("Leni");
glClearColor(0.0, 0.0, 0.0, 0);
gluOrtho2D(0.,800.,0.,600.);
glutIdleFunc(display);
glutDisplayFunc(display);
glutMainLoop();
}
Outputnya :

Tidak ada komentar:
Posting Komentar