Algoritma
Visualisasi 3D-Statis
y
7
8
4
3
5
z
S[1].x menunjukkan koordinat x titik sudut 1
S[1].y menunjukkan koordinat y titik sudut 1
S[1].z menunjukkan koordinat z titik sudut 1
S[2].x menunjukkan koordinat x titik sudut 2, dan
seterusnya.
2. Tentukan letak kamera (View Plane Normal-VPN)
Baris Program : 17-19
Misal :
Kx=10;
Ky=100;
Kz=100;
Artinya posisi kamera di koordinat x=10, y=100,z=100
Posisi kamera ini dpaat diatur dengan menggunakan tombol
atau alat input lain
2
10.
11.
12.
13.
14.
15.
s[7].x=125;s[7].y=500;s[7].z=125;
s[8].x=125;s[8].y=500;s[8].z=125;
//menetukan jujlkah obyek dan jumlkah titik sudut
int jumlah_obyek=1;
int max_titik=8;
16.
17.
18.
19.
20.
21.
22.
23.
24.
//------------------posisi kamera
float kx=0;
float ky=50;
float kz=350;
//---------------------------------float d=sqrt(kx*kx+ky*ky+kz*kz);
float dxn=kx/d;
float dyn=ky/d;
float dzn=kz/d;
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
float T[4][4]=
{
{1,0,0,0},
{0,1,0,0},
{0,0,1,0},
//
{-(kx*jarak-vrp_x),-(ky*jarak-vrp_y),-(kz*jarak-vrp_z),1}
{-(kx-vrp_x),-(ky-vrp_y),-(kz-vrp_z),1}
};
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
float Ry[4][4]=
{
{v1,0,-dxn,0},
{0,1,0,0},
{dxn,0,v1,0},
{0,0,0,1}
};
83. xup_vp=dxup*Rxy[0][0]+dyup*Rxy[1][0]+dzup*Rxy[2][0];
84. yup_vp=dxup*Rxy[0][1]+dyup*Rxy[1][1]+dzup*Rxy[2][1];
85. rup=sqrt(xup_vp*xup_vp+yup_vp*yup_vp);
86.
87.
88.
89.
90.
91.
92.
float Rz[4][4]=
{
{yup_vp/rup,xup_vp/rup,0,0},
{-xup_vp/rup,yup_vp/rup,0,0},
{0,0,1,0},
{0,0,0,1}
};
93.
94.
95.
96.
97.
98.
155. t3[2]=Point(vpn_pers[6][0],vpn_pers[6][1]);
156. t3[3]=Point(vpn_pers[5][0],vpn_pers[5][1]);
157. t3[4]=Point(vpn_pers[1][0],vpn_pers[1][1]);
158. PaintBox1->Canvas->Polyline((TPoint*)t3,4);
159. //poligon 4 atas
160. POINT t4[4];
//deklarasi variabel
161. t4[0]=Point(vpn_pers[4][0],vpn_pers[4][1]);
162. t4[1]=Point(vpn_pers[3][0],vpn_pers[3][1]);
163. t4[2]=Point(vpn_pers[7][0],vpn_pers[7][1]);
164. t4[3]=Point(vpn_pers[8][0],vpn_pers[8][1]);
165. t4[4]=Point(vpn_pers[4][0],vpn_pers[4][1]);
166. PaintBox1->Canvas->Polyline((TPoint*)t4,4);
167. //poligon 5 kanan
168. POINT t5[4];
//deklarasi variabel
169. t5[0]=Point(vpn_pers[2][0],vpn_pers[2][1]);
170. t5[1]=Point(vpn_pers[6][0],vpn_pers[6][1]);
171. t5[2]=Point(vpn_pers[7][0],vpn_pers[7][1]);
172. t5[3]=Point(vpn_pers[3][0],vpn_pers[3][1]);
173. t5[4]=Point(vpn_pers[2][0],vpn_pers[2][1]);
174. PaintBox1->Canvas->Polyline((TPoint*)t5,4);
175.
176. //poligon 6 kiri
177. POINT t6[4];
//deklarasi variabel
178. t6[0]=Point(vpn_pers[1][0],vpn_pers[1][1]);
179. t6[1]=Point(vpn_pers[5][0],vpn_pers[5][1]);
180. t6[2]=Point(vpn_pers[8][0],vpn_pers[8][1]);
181. t6[3]=Point(vpn_pers[4][0],vpn_pers[4][1]);
182. t6[4]=Point(vpn_pers[1][0],vpn_pers[1][1]);
183. PaintBox1->Canvas->Polyline((TPoint*)t6,4);
184. }
//-------------------------------------------------------------------------#ifndef rangkaH
#define rangkaH
//-------------------------------------------------------------------------#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
7
#include <math.h>
#pragma hdrstop
#include "rangka.h"
//-------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)