示例#1
0
void Mirror (POINT *P, boolean SbX, boolean SbY) {
	if (SbX) {
		SetOrdinat(*P,-GetOrdinat(*P));
	}
	if (SbY) {
		SetAbsis(*P,-GetAbsis(*P));
	}
} // Mencerminkan P yang bergantung pada nilai SbX atau SbY
示例#2
0
void Putar (POINT *P, float Sudut) {
	float Radian,x,y;
	Radian=(Sudut*phi)/180;
	/* fungsi cos dan sin membaca dengan sudut radial bukan derajat */
	x=GetAbsis(*P);
	y=GetOrdinat(*P);
	SetAbsis(*P,cos(Radian)*x - sin(Radian)*y);
	SetOrdinat(*P,sin(Radian)*x + cos(Radian)*y);
} // P diputar sebesar Sudut derajat
示例#3
0
POINT MirrorOf (POINT P, boolean SbX, boolean SbY) {
	POINT Point = P;
	if (SbX) {
		SetOrdinat(Point,-GetOrdinat(P));
	}
	if (SbY) {
		SetAbsis(Point,-GetAbsis(P));
	}
	return Point;
} // Menghasilkan salinan P yang dicerminkan tergantung nilai SbX dan SbY
示例#4
0
void setPoint(Plane *plane, Point point, int position) {
	SetAbsis(&((*plane).points.at(position)), GetAbsis(point));
	SetOrdinat(&((*plane).points.at(position)), GetOrdinat(point));
}
示例#5
0
文件: mpoint.c 项目: rivasyafri/ADT
void MasukProgram() {
	int a;
	float b,c;
	int d,e;
	scanf("%d",&a);
	switch (a) {
	case 1 : { 
				BacaPOINT(&P1);
				break;
			}
	case 2 : {
				BacaPOINT(&P2);
				break;
			}
	case 3 : {
				TulisPOINT(P1);
				break;
			}
	case 4 : {
				TulisPOINT(P2);
				break;
			}
	case 5 : { 
				TulisPOINT(plus(P1,P2));
				break; 
		}
	case 6 : { 
				TulisPOINT(minus(P1,P2));
				break; 
			}
	case 7 : { 
				printf("%.2f\n",dot(P1,P2));
				break; 
			}
	case 8 : {
				printf("%.2f\n",cross(P1,P2));
				break;
			}
	case 9 : {
				if (IsOrigin(P1)) {
					printf("Ya\n");
				} else {
					printf("Tidak\n");
				}
				break;
			}
	case 10 : {
				if (IsOnSbX(P1)) {
					printf("Ya\n");
				} else {
					printf("Tidak\n");
				}
				break;
			}
	case 11 : {
				if (IsOnSbY(P1)) {
					printf("Ya\n");
				} else {
					printf("Tidak\n");
				}
				break;
			}
	case 12 : {
				if (EQ(P1,P2)) {
					printf("Ya\n");
				} else {
					printf("Tidak\n");
				}
				break;
			}
	case 13 : {
				if (NEQ(P1,P2)) {
					printf("Ya\n");
				} else {
					printf("Tidak\n");
				}
				break;
			}
	case 14 : {
				if (lebihkecil(P1,P2)) {
					printf("Ya\n");
				} else {
					printf("Tidak\n");
				}
				break;
			}
	case 15 : {
				if (lebihbesar(P1,P2)) {
					printf("Ya\n");
				} else {
					printf("Tidak\n");
				}
				break;
			}
	case 16 : {
				printf("Titik berada di kuadran %d\n",Kuadran(P1));
				break;
			}
	case 17 : {
				TulisPOINT(NextX(P1));
				break;
			}
	case 18 : {
				TulisPOINT(NextY(P1));
				break;
			}
	case 19 : {
				scanf("%f %f",&b,&c);
				TulisPOINT(PlusDelta(P1,b,c));
				break;
			}
	case 20 : {
				scanf("%d %d",&d,&e);
				TulisPOINT(MirrorOf(P1,d,e));
				break;
			}
	case 21 : {
				printf("Jarak dari (0,0) adalah %.2f\n",Jarak0(P1));
				break;
			}
	case 22 : {
				printf("Panjang P1 ke P2 adalah %.2f\n",Panjang(P1,P2));
				break;
			}
	case 23 : {
				scanf("%f %f",&b,&c);
				Geser(&P1,b,c);
				break;
			}
	case 24 : {
				GeserKeSbX(&P1);
				break;
			}
	case 25 : {
				GeserKeSbY(&P1);
				break;
			}
	case 26 : {
				scanf("%d %d",&d,&e);
				Mirror(&P1,d,e);
				break;
			}
	case 27 : {
				scanf("%f",&b);
				Putar(&P1,b);
				break;
			}
	case 28 : {
				scanf("%d",&b);
				SetAbsis(P1,b);
				break;
			}
	case 29 : {
				scanf("%d",&b);
				SetOrdinat(P1,b);
				break;
			}
	case 30 : {
				keluar = true;
				break;
			}
	}
}
int main(){
	int i,h,DX,DY;
	float sudut;
	POINT ptest,p1,p2;
	srand(time(NULL));
	ptest=MakePOINT(rand(),rand());
	TulisPOINT(ptest);
	SetAbsis(&ptest,rand());
	TulisPOINT(ptest);
	SetOrdinat(&ptest,rand());
	TulisPOINT(ptest);
	BacaPOINT(&ptest);
	TulisPOINT(ptest);

//cek operator relasional
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand(),rand());
		p2=MakePOINT(rand(),rand());
		TulisPOINT(p1);
		printf("==");
		TulisPOINT(p2);
		printf("=");
		h=EQ(p1,p2);
		printf("%x\n",h);
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand(),rand());
		p2=p1;
		TulisPOINT(p1);
		printf("==");
		TulisPOINT(p2);
		printf("=");
		h=EQ(p1,p2);
		printf("%x\n",h);
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand(),rand());
		p2=MakePOINT(rand(),rand());
		TulisPOINT(p1);
		printf("!=");
		TulisPOINT(p2);
		printf("=");
		h=NEQ(p1,p2);
		printf("%x\n",h);
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand(),rand());
		p2=p1;
		TulisPOINT(p1);
		printf("!=");
		TulisPOINT(p2);
		printf("=");
		h=NEQ(p1,p2);
		printf("%x\n",h);
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand(),rand());
		TulisPOINT(p1);
		printf("is Origin");
		printf("=");
		h=IsOrigin(p1);
		printf("%x\n",h);
	}
	p1=MakePOINT(0,0);
	TulisPOINT(p1);
	printf("is Origin");
	printf("=");
	h=IsOrigin(p1);
	printf("%x\n",h);
	printf("\n\ncek\n");
	p1=MakePOINT(0,rand());
	TulisPOINT(p1);
	printf("is Origin");
	printf("=");
	h=IsOrigin(p1);
	printf("%x\n",h);
	printf("\n\ncek\n");
	p1=MakePOINT(rand(),0);
	TulisPOINT(p1);
	printf("is Origin");
	printf("=");
	h=IsOrigin(p1);
	printf("%x\n",h);
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand(),rand());
		TulisPOINT(p1);
		printf("is On SbX");
		printf("=");
		h=IsOnSbX(p1);
		printf("%x\n",h);
	}
	p1=MakePOINT(0,0);
	TulisPOINT(p1);
	printf("is SbX");
	printf("=");
	h=IsOnSbX(p1);
	printf("%x\n",h);
	p1=MakePOINT(0,rand());
	TulisPOINT(p1);
	printf("is SbX");
	printf("=");
	h=IsOnSbX(p1);
	printf("%x\n",h);
	p1=MakePOINT(rand(),0);
	TulisPOINT(p1);
	printf("is SbX");
	printf("=");
	h=IsOnSbX(p1);
	printf("%x\n",h);
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand(),rand());
		TulisPOINT(p1);
		printf("is On SbY");
		printf("=");
		h=IsOnSbY(p1);
		printf("%x\n",h);
	}
	p1=MakePOINT(0,0);
	TulisPOINT(p1);
	printf("is SbY");
	printf("=");
	h=IsOnSbY(p1);
	printf("%x\n",h);
	p1=MakePOINT(0,rand());
	TulisPOINT(p1);
	printf("is SbY");
	printf("=");
	h=IsOnSbY(p1);
	printf("%x\n",h);
	p1=MakePOINT(rand(),0);
	TulisPOINT(p1);
	printf("is SbY");
	printf("=");
	h=IsOnSbY(p1);
	printf("%x\n",h);
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand()-rand(),rand()-rand());
		printf("kuadran ");
		TulisPOINT(p1);
		printf("=");
		h=Kuadran(p1);
		printf("%d\n",h);
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand(),rand());
		printf("NextX ");
		TulisPOINT(p1);
		printf("=");
		TulisPOINT(NextX(p1));
		printf("\n");
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand(),rand());
		printf("NextY ");
		TulisPOINT(p1);
		printf("=");
		TulisPOINT(NextY(p1));
		printf("\n");
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand()-rand(),rand()-rand());
		TulisPOINT(p1);
		DX=rand()%10;
		DY=rand()%10;
		printf(" + (%d,%d) =",DX,DY);
		TulisPOINT(PlusDelta(p1,DX,DY));
		printf("\n");
		TulisPOINT(p1);
		printf(" + (%d,%d)g =",DX,DY);
		Geser(&p1,DX,DY);
		TulisPOINT(p1);
		printf("\n");
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT(rand()-rand(),rand()-rand());
		printf("MirrorOf(");
		TulisPOINT(p1);
		printf(",1,0) =");
		TulisPOINT(MirrorOf(p1,1,0));
		printf("\n");
	}
	for (i=0;i<14;i++){
		p1=MakePOINT(rand()-rand(),rand()-rand());
		printf("MirrorOf(");
		TulisPOINT(p1);
		printf(",0,1) =");
		TulisPOINT(MirrorOf(p1,0,1));
		printf("\n");
	}
	for (i=0;i<14;i++){
		p1=MakePOINT(rand()-rand(),rand()-rand());
		printf("MirrorOf(");
		TulisPOINT(p1);
		printf(",1,1) =");
		TulisPOINT(MirrorOf(p1,1,1));
		printf("\n");
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT((rand()-rand())%10,(rand()-rand())%10);
		printf("Jarak0(");
		TulisPOINT(p1);
		printf(") = %f",Jarak0(p1));
		printf("\n");
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT((rand()-rand())%10,(rand()-rand())%10);
		p2=MakePOINT((rand()-rand())%10,(rand()-rand())%10);
		printf("Panjang(");
		TulisPOINT(p1);
		printf(",");
		TulisPOINT(p2);
		printf(") = %f",Panjang(p1,p2));
		printf("\n");
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT((rand()-rand())%10,(rand()-rand())%10);
		TulisPOINT(p1);
		printf("digeser ke Sb-X menjadi ");
		GeserKeSbX(&p1);
		TulisPOINT(p1);
		printf("\n");
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT((rand()-rand())%10,(rand()-rand())%10);
		TulisPOINT(p1);
		printf("digeser ke Sb-Y menjadi ");
		GeserKeSbY(&p1);
		TulisPOINT(p1);
		printf("\n");
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT((rand()-rand())%10,(rand()-rand())%10);
		TulisPOINT(p1);
		printf("dicerminkan dengan Sb-X menjadi ");
		Mirror(&p1,1,0);
		TulisPOINT(p1);
		printf("\n");
	}
	for (i=0;i<14;i++){
		p1=MakePOINT((rand()-rand())%10,(rand()-rand())%10);
		TulisPOINT(p1);
		printf("dicerminkan dengan Sb-Y menjadi ");
		Mirror(&p1,0,1);
		TulisPOINT(p1);
		printf("\n");
	}
	for (i=0;i<14;i++){
		p1=MakePOINT((rand()-rand())%10,(rand()-rand())%10);
		TulisPOINT(p1);
		printf("dicerminkan dengan (0,0) menjadi ");
		Mirror(&p1,1,1);
		TulisPOINT(p1);
		printf("\n");
	}
	printf("\n\ncek\n");
	for (i=0;i<14;i++){
		p1=MakePOINT((rand()-rand())%10,(rand()-rand())%10);
		sudut=(float) (rand()%360);
		
		TulisPOINT(p1);
		printf("diputar %0.0f derajat menjadi ",sudut);
		Putar(&p1,sudut);
		TulisPOINT(p1);
		printf("\n");
	}
	printf("M_PI=%f\n",M_PI);
	return 0;
}
示例#7
0
POINT minus (POINT P1, POINT P2) {
	POINT P;
	SetAbsis(P,GetAbsis(P1)-GetAbsis(P2));
	SetOrdinat(P,GetOrdinat(P1)-GetOrdinat(P2));
	return P;
} // Menghasilkan POINT yang bernilai P1-P2 dengan spesifikasi pengurangan dua buah POINT
示例#8
0
/* KELOMPOK OPERASI ARITMATIKA TERHADAP TYPE */
POINT plus (POINT P1, POINT P2) {
	POINT P;
	SetAbsis(P,GetAbsis(P1)+GetAbsis(P2));
	SetOrdinat(P,GetOrdinat(P1)+GetOrdinat(P2));
	return P;
} // Menghasilkan POINT yang bernilai P1+P2 dengan operasi penjumlahan vector
示例#9
0
/* KELOMPOK INTERAKSI DENGAN I/O DEVICE, BACA/TULIS */
void BacaPOINT (POINT *P) {
	float x,y;
	scanf("%f %f",&x,&y);
	SetAbsis((*P),x);
	SetOrdinat((*P),y);
} // Membaca nilai absis dan ordinat dari keyboard dan membentuk POINT P
示例#10
0
void GeserKeSbX (POINT *P) {
	SetOrdinat(*P,0);
} // P digeser ke sumbu X
示例#11
0
void Geser (POINT *P, float deltaX, float deltaY) {
	SetAbsis(*P,GetAbsis(*P)+deltaX);
	SetOrdinat(*P,GetAbsis(*P)+deltaY);
} // P digeser sebesar deltaX dan deltaY
示例#12
0
/* KONSTRUKTOR MEMBENTUK POINT */
POINT MakePOINT (float X, float Y) {
	POINT P;
	SetAbsis(P,X);
	SetOrdinat(P,Y);
	return P;
} // Membentuk sebuah POINT dari komponen-komponennya