Point.h
#ifndef POINT_H_INCLUDED
#define POINT_H_INCLUDED
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#define true 1
#define false 0
#define boolean unsigned char
typedef struct{
float X;
float Y;
}TPoint;
typedef TPoint Point;
Point MakePoint(float X,float Y);
void Tulis(Point P);
float GetAbsis(Point P);
float GetOrdinat(Point P);
void SetAbsis(Point *P,float newx);
void SetOrdinat(Point *P,float newy);
Point AddP(Point P1, Point P2);
Point MinP(Point P1, Point P2);
Point MulDot(Point P1, Point P2);
Point MulCros(Point P1, Point P2);
boolean EqP(Point P1, Point P2);
boolean NEqP(Point P1, Point P2);
boolean LTP(Point P1,Point P2);
boolean GTP(Point P1,Point P2);
boolean IsOrigin(Point P);
boolean IsOnSbX(Point P);
boolean IsOnSbY(Point P);
int Kuadran(Point P);
Point NextX(Point P);
Point NextY(Point P);
Point PlusDelta(Point p,int deltax,int deltay);
Point MirrorOf(Point p,boolean sbx,boolean sby);
float JarakPst(Point p);
float Panjang(Point P1,Point P2);
void Geser(Point *p,int deltax,int deltay);
void GeserSbX(Point *p);
void GeserSbY(Point *p);
void Putar(Point *p,float sudut);
Point Koor2Point(Point P1,Point P2);
#endif // POINT_H_INCLUDED
Point.C
#include "point.h"
/*Konstruktor*/
Point MakePoint(float a,float b)
{
Point P;
P.X=a;
P.Y=b;
return(P);
}
/*Selektor*/
float GetAbsis(Point P)
{
return P.X ;
}
float GetOrdinat(Point P)
{
return P.Y ;
}
/*Kolektor*/
void SetAbsis(Point *P,float newx)
{
(*P).X=newx;
}
void SetOrdinat(Point *P,float newy)
{
(*P).Y=newy;
}
/*Baca Tulis*/
void BacaPoint(Point *P)
{
float x,y;
printf("Buat Point (X Y): ");
scanf("%f %f",&x,&y);
(*P)=MakePoint(x,y);
}
void Tulis(Point P)
{
printf("(%d,%d)\n",(int)P.X,(int)P.Y);
}
Point AddP(Point P1, Point P2)
{
Point P;
P.X=P1.X+P2.X;
P.Y=P1.Y+P2.Y;
return (P);
}
Point MinP(Point P1, Point P2)
{
Point P;
P.X=P1.X-P2.X;
P.Y=P1.Y-P2.Y;
return (P);
}
Point MulDot(Point P1, Point P2)
{
Point P;
P.X=P1.X*P1.Y;
P.Y=P2.X*P2.Y;
return (P);
}
Point MulCros(Point P1, Point P2)
{
Point P;
P.X=P1.X*P2.Y;
P.Y=P2.X*P1.Y;
return (P);
}
boolean EqP(Point P1, Point P2)
{
boolean same;
if ((P1.X==P2.X ) && (P1.Y==P2.Y))
{
same = true;
}
else same = false;
return same;
}
boolean NEqP(Point P1, Point P2)
{
boolean same;
if ((P1.X!=P2.X ) || (P1.Y!=P2.Y))
{
same = true;
}
else same = false;
return same;
}
boolean LTP(Point P1,Point P2)
{
boolean less;
if ((P1.X<P2.X ) && (P1.Y<P2.Y))
{
less = true;
}
else less = false;
return less;
}
boolean GTP(Point P1,Point P2)
{
boolean greate;
if ((P1.X>P2.X ) && (P1.Y>P2.Y))
{
greate = true;
}
else greate = false;
return greate;
}
boolean IsOrigin(Point P)
{
boolean ori;
if ((P.X==0) && (P.Y==0))
{
ori = true;
}
else ori = false;
return ori;
}
boolean IsOnSbX(Point P)
{
boolean onx;
if (P.Y ==0)
{
onx = true;
}
else onx = false;
return onx;
}
boolean IsOnSbY(Point P)
{
boolean ony;
if (P.X ==0)
{
ony = true;
}
else ony = false;
return ony;
}
int Kuadran(Point P)
{
int x;
if(P.X>0&&P.Y>0) x=1;
else if (P.X<0&&P.Y>0) x=2;
else if (P.X<0&&P.Y<0) x=3;
else if (P.X>0&&P.Y<0) x=4;
return x;
}
Point NextX(Point P)
{
Point P0;
P0.X=P.X+1;
P0.Y=P.Y;
return (P0);
}
Point NextY(Point P)
{
Point P0;
P0.X=P.X;
P0.Y=P.Y+1;
return (P0);
}
Point PlusDelta(Point p,int deltax,int deltay)
{
Point xdel;
xdel.X = p.X + deltax;
xdel.Y = p.Y + deltay;
return (xdel);
}
Point MirrorOf(Point p,boolean sbx,boolean sby)
{
Point mirror;
if (sbx == true)
{
mirror.X = p.X * -1;
mirror.Y = p.Y;
}
if (sby == true)
{
mirror.X = p.X;
mirror.Y = p.Y * -1;
}
return mirror;
}
float JarakPst(Point p)
{
float jar;
p.X = p.X * p.X;
p.Y = p.Y * p.Y;
jar = p.X + p.Y;
jar = sqrt(jar);
return jar;
}
float Panjang(Point P1,Point P2)
{
float pj;
Point P;
P.X=P2.X-P1.X;
P.Y=P2.Y-P1.Y;
P.X*=P.X;
P.Y*=P.Y;
pj=P.X+P.Y;
pj=sqrt(pj);
return pj;
}
void Geser(Point *p,int deltax,int deltay)
{
(*p).X+=deltax;
(*p).Y+=deltay;
}
void GeserSbX(Point *p)
{
(*p).Y=0;
}
void GeserSbY(Point *p)
{
(*p).X=0;
}
void Putar(Point *p,float sudut)
{
float temp_sudut;
temp_sudut = (sin((*p).X / JarakPst(*p))) + (sudut * 3.14 / 180);
(*p).X = JarakPst(*p) * sin(temp_sudut);
(*p).Y = JarakPst(*p) * cos(temp_sudut);
}
Point Koor2Point(Point P1,Point P2)
{
Point P;
P.X=(P1.X+P2.X)/2;
P.Y=(P1.Y+P2.Y)/2;
return (P);
}
Drvpoint.C
#include "point.h"
Point P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11; //include dari point.h {struct float x, y}
int main()
{
P1=MakePoint(2.0,2.0); printf("P1 = "); Tulis(P1);
P2=MakePoint(-2.0,2.0); printf("P2 = "); Tulis(P2);
P3=MakePoint(2.0,-2.0); printf("P3 = "); Tulis(P3);
P4=MakePoint(-2.0,-2.0); printf("P4 = "); Tulis(P4);
P7=MakePoint(-2.0,-2.0); printf("P7 = "); Tulis(P7);
P8=MakePoint(-2.0,-2.0); printf("P8 = "); Tulis(P8);
P9=MakePoint(0.0,0.0); printf("P9 = "); Tulis(P9);
P10=MakePoint(1.0,0.0); printf("P10 = "); Tulis(P10);
P11=MakePoint(0.0,1.0); printf("P11 = "); Tulis(P11);
//BacaPoint(&P5);
//printf("P5 = "); Tulis(P5);
printf(" GetAbsis P1 : %d\n",(int)GetAbsis(P1));
printf(" GetAbsis P2 : %d\n",(int)GetAbsis(P2));
printf(" GetAbsis P3 : %d\n",(int)GetAbsis(P3));
printf(" GetAbsis P4 : %d\n",(int)GetAbsis(P4));
printf(" GetAbsis P5 : %d\n",(int)GetAbsis(P5));
printf(" GetOrdinat P1 : %d\n",(int)GetOrdinat(P1));
printf(" GetOrdinat P2 : %d\n",(int)GetOrdinat(P2));
printf(" GetOrdinat P3 : %d\n",(int)GetOrdinat(P3));
printf(" GetOrdinat P4 : %d\n",(int)GetOrdinat(P4));
printf(" GetOrdinat P5 : %d\n",(int)GetOrdinat(P5));
SetAbsis(&P1,4.0); SetOrdinat(&P1,4.0);
printf(" P1 stlh diset 4,4 dgn setAbsis & setOrdinat : ");Tulis(P1);
P5=MakePoint(-2,2);
printf(" P5 stlh diset -2,2 dgn MakePoint : ");Tulis(P5);
P5=AddP(P1,P2); printf(" Tulis P5 =P1+P2 : "); Tulis(P5);
P5=MinP(P1,P2); printf(" Tulis P5 =P1-P2 : "); Tulis(P5);
P5=MulDot(P1,P2); printf(" Tulis P5 =P1.P2 : "); Tulis(P5);
P5=MulCros(P1,P2); printf(" Tulis P5 =P1*P2 : "); Tulis(P5);
printf(" Equal P1 P2 ? %d\n",EqP(P1,P2));
printf(" Equal P7 P8 ? %d\n",EqP(P7,P8));
printf("~Equal P1 P2 ? %d\n",NEqP(P1,P2));
printf("~Equal P7 P8 ? %d\n",NEqP(P7,P8));
printf(" Less P1 P2 ? %d\n",LTP(P1,P2));
printf(" Greate P1 P2 ? %d\n",GTP(P1,P2));
printf(" Origin P1 ? %d\n",IsOrigin(P1));
printf(" Origin P9 ? %d\n",IsOrigin(P9));
printf(" IsOnSbX P1 ? %d\n",IsOnSbX(P1));
printf(" IsOnSbX P10 ? %d\n",IsOnSbX(P10));
printf(" IsOnSbY P1 ? %d\n",IsOnSbY(P1));
printf(" IsOnSbY P1 ? %d\n",IsOnSbY(P11));
printf(" P1 Kuadran Ke : %d\n",Kuadran(P1));
printf(" P2 Kuadran Ke : %d\n",Kuadran(P2));
printf(" P3 Kuadran Ke : %d\n",Kuadran(P3));
printf(" P4 Kuadran Ke : %d\n",Kuadran(P4));
P1= NextX(P1); printf(" NextX P1 : ");Tulis(P1);
P2= NextY(P2); printf(" NextY P2 : ");Tulis(P2);
P3= PlusDelta(P3,2,2); printf(" PlusDelta P3 (2,2) : ");Tulis(P3);
P4= MirrorOf(P4, true, false); printf(" Miror P4 SbX : ");Tulis(P4);
P7= MirrorOf(P7, false, true); printf(" Miror P7 Sby : ");Tulis(P7);
printf("P1 = "); Tulis(P1);
Geser(&P1,2,3); printf(" Geser P1 (2,3) : ");Tulis(P1);
printf("P2 = "); Tulis(P2);
GeserSbX(&P2); printf(" Miror P2 SbX : ");Tulis(P2);
printf("P3 = "); Tulis(P3);
GeserSbY(&P3); printf(" Miror P3 SbY : ");Tulis(P3);
printf(" Tulis P1 : ");Tulis(P1);
printf(" Jarak P1 dr (0,0) : %.2f\n",JarakPst(P1));
printf(" Jarak P1 P2 : %.2f\n",Panjang(P1,P2));
printf(" P1 sblm rot 30 CCW : ");Tulis(P1);
Putar(&P1,30.0);
printf(" P1 stlh rot 30 CCW : ");Tulis(P1);
Putar(&P1,-30.0);
printf(" P1 stlh rot-30 CCW : ");Tulis(P1);
printf("P1 = "); Tulis(P1);
printf("P5 = "); Tulis(P5);
P6=Koor2Point(P1,P5); printf(" Koord 2 titik P1 dan P5 : "); Tulis(P6);
return 0;
}
Hasil
mau dunk belajar bareng pmrograman bahasa c/c++
yaaa.. yaa... pelllisss... :p