Ejemplo n.º 1
0
void Geser(Triangle *T, int deltaX, int deltaY)
/* I.S. T terdefinisi */
/* F.S. T digeser, setiap absisnya sebesar deltaX dan setiap ordinatnya sebesar deltaY */
{
	(*T).P1 = MakePOINT(GetAbsis(GetPointN((*T),0)) + deltaX, GetOrdinat(GetPointN((*T),0)) + deltaY);
	(*T).P2 = MakePOINT(GetAbsis(GetPointN((*T),1)) + deltaX, GetOrdinat(GetPointN((*T),1)) + deltaY);
	(*T).P3 = MakePOINT(GetAbsis(GetPointN((*T),2)) + deltaX, GetOrdinat(GetPointN((*T),2)) + deltaY);
}
Ejemplo n.º 2
0
void SetPointN(Triangle *T, Point newP, int N)
/* Mengubah nilai komponen Point ke-N dari T */
{
	switch(N){
		case 0: (*T).P1 = MakePOINT(GetAbsis(newP), GetOrdinat(newP)); break;
		case 1: (*T).P2 = MakePOINT(GetAbsis(newP), GetOrdinat(newP)); break;
		case 2: (*T).P3 = MakePOINT(GetAbsis(newP), GetOrdinat(newP)); break;
	}
}
Ejemplo n.º 3
0
Triangle PlusDelta(Triangle T, int deltaX, int deltaY)
/* Mengirim salinan T yang absis dari setiap pointnya adalah Absis(P) + deltaX dan
 * ordinat dari setiap pointnya adalah Ordinat(P) + deltaY */
{
	Triangle newT;
	newT.P1 = MakePOINT(GetAbsis(GetPointN(T,0)) + deltaX, GetOrdinat(GetPointN(T,0)) + deltaY);
	newT.P2 = MakePOINT(GetAbsis(GetPointN(T,1)) + deltaX, GetOrdinat(GetPointN(T,1)) + deltaY);
	newT.P3 = MakePOINT(GetAbsis(GetPointN(T,2)) + deltaX, GetOrdinat(GetPointN(T,2)) + deltaY);
	return newT;
}
Ejemplo n.º 4
0
int Kuadran (POINT P) {
	if ((GetAbsis(P)>0)&&(GetOrdinat(P)>0)) {
		return 1;
	} else if ((GetAbsis(P)>0)&&(GetOrdinat(P)<0)) {
		return 4;
	} else if ((GetAbsis(P)<0)&&(GetOrdinat(P)>0)) {
		return 2;
	} else if ((GetAbsis(P)<0)&&(GetOrdinat(P)<0)) {
		return 3;
	}
} // Menghasilkan kuadran dari P : 1,2,3, atau 4
Ejemplo n.º 5
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
Ejemplo n.º 6
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
Ejemplo n.º 7
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
Ejemplo n.º 8
0
boolean NEQ (POINT P1, POINT P2){
	return ((GetAbsis(P1))!=(GetAbsis(P2))) || ((GetOrdinat(P1))!=(GetOrdinat(P2)));
} // Mengirimkan true jika P1 != P2
Ejemplo n.º 9
0
/* KELOMPOK OPERASI RELASIONAL TERHADAP POINT */
boolean EQ (POINT P1, POINT P2) {
	return ((GetAbsis(P1))==(GetAbsis(P2))) && ((GetOrdinat(P1))==(GetOrdinat(P2)));
} // Mengirimkan true jika P1 = P2
Ejemplo n.º 10
0
POINT NextY (POINT P) {
	return MakePOINT(GetAbsis(P),GetOrdinat(P)+1);
} // Ordinat ditambah 1
Ejemplo n.º 11
0
/* KELOMPOK MENENTUKAN DI MANA P BERADA */
boolean IsOrigin (POINT P) {
	return (GetAbsis(P)==0)&&(GetOrdinat(P)==0);
}
Ejemplo n.º 12
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
Ejemplo n.º 13
0
float Panjang (POINT P1, POINT P2) {
	return sqrt((GetAbsis(P1)-GetAbsis(P2))*(GetAbsis(P1)-GetAbsis(P2))+(GetOrdinat(P1)-GetOrdinat(P2))*(GetOrdinat(P1)-GetOrdinat(P2)));
} // Menghitung panjang garis yang dibentuk P1 dan P2
Ejemplo n.º 14
0
float Jarak0 (POINT P) {
	return sqrt((GetAbsis(P))*(GetAbsis(P))+(GetOrdinat(P))*(GetOrdinat(P)));
} // Menghitung jarak P ke (0,0)
Ejemplo n.º 15
0
boolean lebihkecil (POINT P1, POINT P2) {
	return ((GetAbsis(P1))<(GetAbsis(P2))) && ((GetOrdinat(P1))<(GetOrdinat(P2)));
} // Mengirimkan true jika P1 < P2
Ejemplo n.º 16
0
boolean lebihbesar (POINT P1, POINT P2) {
	return ((GetAbsis(P1))>(GetAbsis(P2))) && ((GetOrdinat(P1))>(GetOrdinat(P2)));
} // Mengirimkan true jika P1 > P2
Ejemplo n.º 17
0
void TulisPOINT (POINT P) {
	printf("(%.2f,%.2f)\n",GetAbsis(P),GetOrdinat(P));
} // Menulis P dengan format "(X,Y)"
Ejemplo n.º 18
0
boolean IsOnSbY (POINT P) {
	return (GetAbsis(P)==0);
}
Ejemplo n.º 19
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
Ejemplo n.º 20
0
/* KELOMPOK OPERASI LAIN TERHADAP TYPE */
POINT NextX (POINT P) {
	return MakePOINT(GetAbsis(P)+1,GetOrdinat(P));
} // Absis ditambah 1
Ejemplo n.º 21
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
Ejemplo n.º 22
0
POINT PlusDelta (POINT P, float deltaX, float deltaY) {
	return MakePOINT(GetAbsis(P)+deltaX,GetOrdinat(P)+deltaY);
} // P=[Absis(P)+deltaX,Ordinat(P)+deltaY]
Ejemplo n.º 23
0
float dot (POINT P1, POINT P2) {
	return GetAbsis(P1)*GetAbsis(P2) + GetOrdinat(P1)*GetOrdinat(P2);
} // Operasi perkalian P1.P2 : melakukan operasi dot product; P1.P2=[x1,y2].[x2,y2]
Ejemplo n.º 24
0
void setPoint(Plane *plane, Point point, int position) {
	SetAbsis(&((*plane).points.at(position)), GetAbsis(point));
	SetOrdinat(&((*plane).points.at(position)), GetOrdinat(point));
}
Ejemplo n.º 25
0
float cross (POINT P1, POINT P2) {
	return GetAbsis(P1)*GetOrdinat(P2) - GetOrdinat(P1)*GetAbsis(P2);
} // Operasi perkalian P1xP2 : melakukan operasi cross product; P1xP2=[x1,y1]T x [x2,y2]T