DAFTAR PUSTAKA. 1. Ramadhan, Arif, Seri Penuntun Praktis Microsoft Visual Basic. Jakarta: Elex Media Komputindo.

dokumen-dokumen yang mirip
BAB IV Pemrograman Grafis

Pre Processing. Memberikan gambaran jenis-jenis pre-processing

Cropping_Merging_Transparent

Kompensasi Pencahayaan

Kompensasi Pencahayaan

Pre Processing. Memberikan gambaran jenis-jenis pre-processing

Lampiran A HELP EZTWAIN. crash.

DAFTAR PUSTAKA. Multimedia Control, Steven Holzner. Diakses pada tanggal 14/09/2011 Dari

KARTU BIMBINGAN TUGAS AKHIR MAHASISWA

E-Trick Visual Basic 6.0

MODUL 3 SELEKSI KONDISI

Lampiran A. Program Visualisasi Cuaca Otomatis

PEMBUATAN MENU dengan MENU EDITOR

BAB IV. adalah tahap implementasi dan penyempurnaan. Berikut ini akan dijelaskan. implementasi dari aplikasi permainan komputer game knight s tour

LISTING PROGRAM. Script Menu Utama Pada Game Tebak Kata

LISTING PROGRAM. Public Declare Sub PortOut Lib "io.dll" (ByVal Port As Integer, ByVal Value As Byte)

PEMROGRAMAN GRAFIS (VISUAL BASIC)

Pengolahan Citra Digital Dengan Visual Basic

Andy Prasetyo Utomo, S.Kom Pemrograman Terstruktur (Visual Basic 6.0)

BAB IV IMPLEMENTASI DAN PENGUJIAN

LISTING PROGRAM. 'byte of info Private Type RGBcolor R As Byte 'amount of red G As Byte 'amount of green B As Byte 'amount of blue End Type

BAB 2 LANDASAN TEORI

Private Sub cmdprint_click() WebBrowser1.ExecWB OLECMDID_PRINT,OLECMDEXECOPT_DODEFAULT End Sub

Mengerti dan memahami pemrograman berbasis object Mengerti dan memahami pembuatan visualisasi untuk interface

BAB 4 : USER INTERFACE

Program Studi Teknik Mesin S1

BAB III ANALISIS DAN PERANCANGAN APLIKASI 3.1 ANALISIS

P5 Variabel, Tipe Data dan Operator

BAB III LANDASAN TEORI. muka yang bersifat grafis Graphical User Interface (GUI). Daripada menulis

Bentuk umum penulisan rumusannya, adalah sebagai berikut :

BAB IV HASIL DAN UJI COBA

VBSCRIPT TUTORIAL. 2. MEMASUKKAN KODE VBSCRIPT KE DALAM HALAMAN HTML Kode VBScript ditulis didalam pasangan tag <SCRIPT>.

MODUL IV PERULANGAN ( LOOPING )

Bab 7 Komponen Dasar Visual Basic 29 BAB VII KOMPONEN DASAR VISUAL BASIC TUJUAN PRAKTIKUM

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN. dan menjelasan berbagai hal yang berhubungan dengan pengujian.

BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR

1. Buka Visual Basic 6 sobat. Buat project baru, masukkan componen Microsoft Winsock Control 2. Masukkan coding berikut

Pembacaan dan Penampilan Image

PROGRAM STUDI TEKNIK KOMPUTER JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Praktikum Pengolahan Citra Digital

Menjelaskan variabel aksi sebagai data string nilai,hasil dan simpan sebagai data double.

Pengenalan Visual Basic

Tutorial, Source code, Request Program Visual Basic

LISTING PROGRAM. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) ShowInputForm End Sub

BAB V PROSEDUR DAN FUNGSI

Pertemuan 11 type data, deklarasi variabel dan array 1.1 Mengenal Data dan Variabel

1.1 Mengenal Visual Basic (VB) 1.2 Mengenal Integrated Development Environment (IDE) VB 6

LISTING PROGRAM FORM MENU UTAMA. Private Sub Command1_Click() Unload Me Form2.Show End Sub. Private Sub Command3_Click() Form10.

DISUSUN OLEH : : Friska Rosalina NIM :

DAFTAR PUSTAKA. Azar, Betty Schrampfer Fundamental of English Grammar. New Jersey: Prentice- Hall, Inc.

LISTING PROGRAM. Private Sub MDIParent1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Gambar 8.1. Dialog Menu Editor.

Pertemuan ke-7. MDI Form, dan Menu

MODUL 2 SELECTION & LOOPING PADA FORM

V. MENGENAL VARIABEL KONSTANTA TIPE DATA DAN OPERATOR DALAM VISUAL BASIC

Studi Digital Watermarking Citra Bitmap dalam Mode Warna Hue Saturation Lightness

LAMPIRAN A: LISTING PROGRAM

BAB IV PERANCANGAN. Gambar diatas adalah tampilang awal ketika ingin memulai project baru. Pilih Standart EXE untuk memulai project.

Praktekum VB 6.0 I. KOTAK PESAN. Contoh syntax kotak pesan

BAB IV IMPLEMENTASI DAN PENGUJIAN

MODUL-MODUL PRAKTIKUM VB.

Menampilkan List Komputer dan User-nya dalam Jaringan Intranet Dengan Fungsi WNet API

Kartu Bimbingan Tugas Akhir Mahhasiswa

Membuat Program Animasi Bentuk Shape Dengan Visual Basic 6.0

MODUL I Pengenalan IDE Visual Basic 6.0

PROCEDURE DAN FUNCTION. Mardhiya Hayaty, ST, M.Kom

VISUAL BASIC 6.0 PEMROGRAMAN KOMPUTER. Visual Basic

LISTING PROGRAM. lbljalan.caption = "Selamat Menggunakan Kamus Digital Istilahistilah

LAMPIRAN WAWANCARA. Berikut adalah hasil selengkapnya wawancara dengan pihak perusahaan untuk

Coding : Coding : Oleh : Uus Rusmawan Hal - 1

BAB III Struktur Program

MODUL 2 PERANCANGAN INTERFACE

MODUL-MODUL PRAKTIKUM VB.

BAB IV VARIABEL DAN TIPE DATA

Pengenalan Microsoft Visual Studio 2010

SATUAN ACARA PERKULIAHAN MATA KULIAH ALGORITMA dan PEMROGRAMAN 1B(D3/TK) KODE : / SKS. Teknik Pembelajaran Kuliah mimbar dimana

Variabel, Operator Dan Ekspresi. Agus Priyanto, M.Kom

1. Rancangan Input Program Form Menu Utama Form Data Barang [ Input Barang ]

Modul Praktikum Ke-2

Percobaan 2 PENGENALAN INTERFACE SERIAL DAN UART

PEMROGRAMAN KOMPUTER KODE MODUL: TIN 202 MODUL V PENGENALAN MICROSOFT VISUAL BASIC 6.0

PENGGUNAAN DATA DAN VARIABEL KOMPUTER APLIKASI AKUNTANSI V PRODI AKUNTANSI - UNIKOM

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

MODUL-MODUL PRAKTIKUM VB.

PEMROGRAMAN DASAR. Visual Basic 6

Dasar Pemrograman Java

BAB IV IMPLEMENTASI DAN PENGUJIAN

MODUL PRAKTIKUM VB.NET STMIK-IM BANDUNG MODUL-MODUL PRAKTIKUM. VB. Net. Oleh : CHALIFA CHAZAR S T M I K - I M B A N D U N G

LAMPIRAN CODING PROGRAM FORM DISPLAY : Private Sub Cmd_Cancel_Click() End End Sub

VISUAL BASIC 6.0 SETYO BUDI, M.KOM

BAB IV IMPLEMENTASI DAN PENGUJIAN. dan tempat implementasi dari perangkat lunak ini adalah sebagai berikut :

LISTING PROGRAM PADA MICROSOFT VISUAL BASIC 6.0

Listing Program. 1. Loading. 2. Home. Option Explicit. Dim isplash As Integer. Private Sub Timer1_Timer() On Error Resume Next. isplash = isplash + 5

Struktur Data II. Bekerja Dengan Form.

Krisna D. Octovhiana. 1.1 Mengenal Data dan Variabel.

Keterangan : Integer Long : tipe data untuk angka bulat Single, Double : tipe data untuk angka pecahan/desimal Currency : tipe data untuk angka mata

BAB I PENDAHULUAN 1.1 Latar Belakang


KONSTANTA, VARIABEL, TIPE DATA dan OPERATOR

BAB PERULANGAN (LOOPING)

Transkripsi:

DAFTAR PUSTAKA 1. Ramadhan, Arif, 2004. Seri Penuntun Praktis Microsoft Visual Basic. Jakarta: Elex Media Komputindo. 2. Santoso, I. P., 1994, Grafika Komputer dan Antarmuka Grafis, Andi, Yogjakarta. 3. Suyoto, Dr., 2003, Teori dan Pemprograman Grafika Komputer dengan Visual C++ V.b dan OpenGL, Gavamedia, Yogjakarta 4. Yuswanto, 2002, Visual Basic 6.0 Pemprograman Grafis & Multimedia, Prestasi Pustaka Publisher, Surabaya 5. http://lecturer.eepisits.edu/~nana/index_files/materi/grafika/teori/pertemuan 9_Grafik%203%20Dimensi(1).pdf 6. http://www.scribd.com/doc/74599978/10/rotasi 7. http://lenterajiwaku.files.wordpress.com/2012/09/gf-minggu8.pdf 8. http://library.binus.ac.id/ecolls/ethesis/bab2/2012-1-00241- if%20bab%202.pdf 9. http://trisnowlaharwetan.wordpress.com/2010/02/05/mengenal-windows-api/ 10. http://ramajinx2.wordpress.com/simple-trick/win32-api-windows-32-bit- %E2%80%93-application-programming-interface-2/ 75

LAMPIRAN Dim FPS As Integer Dim Running As Boolean Listing Program FrmSplash (frmpembuka.frm) Option Explicit Private Type SwirlParticles Angle As Single angleadd As Single X As Integer Y As Integer CurX As Integer CurY As Integer Red As Byte Green As Byte Blue As Byte Rad As Single radadd As Single End Type Dim I As Long Dim merah, hijau, biru As Integer Dim Swirl() As SwirlParticles Dim TMax As Integer Dim PicWidth As Integer Dim PicHeight As Integer Dim PicWH As Integer Dim PicWHd2 As Integer Private Sub angleadd() Dim X As Integer For X = 0 To TMax Swirl(X).angleadd = -Swirl(X).angleadd Private Sub radadd() Dim X As Integer For X = 0 To TMax Swirl(X).radadd = -Swirl(X).radadd Private Sub Check4_Click() SwirlAngleRad Private Sub Form_Load() Dim X As Integer PicWidth = Picture1.ScaleWidth PicHeight = Picture1.ScaleHeight PicWH = Sqr(PicWidth ^ 2 + PicHeight ^ 2) Randomize Time TMax = 1000 ReDim Swirl(TMax) As SwirlParticles For X = 0 To TMax Swirl(X).Angle = Int(Rnd * 361) 76

77 Swirl(X).angleadd = (Rnd * 0.07) Swirl(X).X = PicWidth / 2 Timer2.Enabled = True Swirl(X).Y = PicHeight / 2 Swirl(X).Rad = Rnd * PicWH / 2 Swirl(X).radadd = Rnd * 3 Swirl(X).Red = (Rnd * 55) Swirl(X).Green = (Rnd * 55) Swirl(X).Blue = (Rnd * 255) Me.Show 'Running = True PicWHd2 = PicWH / 2 'SwirlScreen Timer2.Enabled = True angleadd radadd ReDim Swirl(TMax) As SwirlParticles For X = 0 To TMax Swirl(X).Angle = Int(Rnd * 361) Swirl(X).X = PicWidth / 2 Swirl(X).Y = PicHeight / 2 Swirl(X).Rad = Rnd * PicWH / 2 SwirlAngle SwirlRad SwirlColorsRGB Picture1.Cls Private Sub Label1_Click() frmsplash.hide MDIForm1.Show Private Sub Timer1_Timer() Me.Caption = "Swirl - " & FPS & " FPS" FPS = 0 Private Sub Timer2_Timer() Dim X As Integer For X = 0 To TMax Swirl(X).Angle = Swirl(X).Angle + Swirl(X).angleadd If Swirl(X).Angle > 360 Then Swirl(X).Angle = 0 If Swirl(X).Rad > PicWHd2 Then Swirl(X).Rad = 0 If Swirl(X).Rad < 0 Then Swirl(X).Rad = PicWHd2 Swirl(X).Rad = Swirl(X).Rad + Swirl(X).radadd SetPixel Picture1.hdc, Swirl(X).CurX, Swirl(X).CurY, 0 Swirl(X).CurX = Swirl(X).X + Swirl(X).Rad * (Cos(Swirl(X).Angle)) Swirl(X).CurY = Swirl(X).Y + Swirl(X).Rad * (Sin(Swirl(X).Angle))

78 SetPixel Picture1.hdc, Swirl(X).CurX, Swirl(X).CurY, RGB(Swirl(X).Red, Swirl(X).Green, Swirl(X).Blue) FPS = FPS + 1 Private Sub SwirlColorsRed() Dim X As Integer Randomize Time For X = 0 To TMax Swirl(X).Red = Rnd * 255 Private Sub SwirlColorsGreen() Dim X As Integer Randomize Time For X = 0 To TMax Swirl(X).Green = Rnd * 255 Private Sub SwirlColorsBlue() Dim X As Integer Randomize Time For X = 0 To TMax Swirl(X).Blue = Rnd * 255 Private Sub SwirlAngle() Dim X As Integer For X = 0 To TMax Swirl(X).angleadd = (Rnd * 40) / 100 For X = 0 To TMax Swirl(X).angleadd = (40) / 100 For X = 0 To TMax Swirl(X).angleadd = -((40) / 100) Private Sub SwirlRad() Dim X As Integer For X = 0 To TMax Swirl(X).radadd = (Rnd * 20) / 2 For X = 0 To TMax Swirl(X).radadd = (20) / 2 For X = 0 To TMax Swirl(X).radadd = -((20) / 2) Private Sub SwirlAngleRad() Dim X As Integer For X = 0 To TMax Swirl(X).radadd = (Rnd * 20) / 2

79 Swirl(X).angleadd = (Rnd * 40) / 100 For X = 0 To TMax Swirl(X).radadd = (20) / 2 Swirl(X).angleadd = (40) / 100 Private Sub SwirlColorsRGB() Dim X As Integer Randomize Time For X = 0 To TMax Swirl(X).Red = Rnd * 255 Swirl(X).Green = Rnd * 255 Swirl(X).Blue = Rnd * 255 Private Sub Timer3_Timer() I = I + 1 If I = 1000000 Then I = 0 merah = Int(255 * Rnd) hijau = Int(255 * Rnd) biru = Int(255 * Rnd) lbljudul1.forecolor = RGB(merah, hijau, biru) lbljudul2.forecolor = RGB(merah, hijau, biru) lblnama.forecolor = RGB(merah, hijau, biru) lblnim.forecolor = RGB(merah, hijau, biru) lblfakultas.forecolor = RGB(merah, hijau, biru) lbljurusan.forecolor = RGB(merah, hijau, biru) Line1.BorderColor = RGB(merah, hijau, biru) Listing Program MDIForm1 (formmenurotasi.frm) Private Sub cascade_click() Me.Arrange vbcascade Private Sub horizontal_click() Me.Arrange vbtilehorizontal Private Sub mnuabout_click() frmabout.show Private Sub mnukeluar_click() End Private Sub rotasi3d_click() sumbuxyz.show Private Sub rotasix_click() sumbux.show Private Sub rotasiy_click()

80 sumbuy.show Dim Sides(100) As Verticies 'sisi objek 100 Private Sub rotasiz_click() sumbuz.show Dim Sides1(100) As Verticies 100 Dim XSides(100) As Verticies 100 'sisi objek 'titik rotasi X Private Sub vertical_click() Me.Arrange vbtilevertical Listing Program sumbux (sumbux.frm) Dim Angle As Double Dim AngleHolder As Double sudut rotasi sebelumnya 'Sudut Rotasi 'holder untuk Dim NumObjectSides As Integer 'Jumlah sisi yang membentuk objek Private Type Point X As Double Y As Double Z As Double 'Susunan titik 'Lokasi koordinat X 'Lokasi koordinat Y 'Lokasi koordinat Z Dim XSides1(100) As Verticies X 100 Dim YSides(100) As Verticies 100 Dim YSides1(100) As Verticies Y 100 Dim ZSides(100) As Verticies 100 Dim ZSides1(100) As Verticies 100 Dim Sides3D(100) As Verticies 3D 100 'titik rotasi 'titik rotasi Y 'titik rotasi 'titik rotasi Z 'titik rotasi Z 'titik rotasi Dim Sides3D1(100) As Verticies 'titik rotasi 3D 100 Dim CosAng(359) As Double menahan Angles Cosine Dim SinAng(359) As Double menahan Sine Angles 'untuk 'untuk End Type Dim Center As Point Private Type Verticies NumPoints As Integer pada garis Points(40) As Point baris 40 Normal As Point End Type 'titik pusat 'sisi simpul 'Jumlah titik 'titik akhir setiap 'bidang normal Private Type POINTAPI 'ini adalah Poin ditarik dari objek untuk mengisinya X As Long 'dan menarik dengan cepat menggunakan fungsi win api Y As Long End Type Dim tmp() As POINTAPI 'Fungsi untuk menggambar Poligon secara cepat

81 Private Declare Function Polygon Lib "gdi32" _ BUTNOKAY_Click 'mengatur sudut dan menampilkan kembali posisi ke 0 (ByVal hdc As Long, lppoint As POINTAPI, ByVal ncount As Long) As Long Private Sub BUTNOKAY_Click() 'mengatur sudut dan membentuk Rotasi Private Sub BUTNStart_Click() Timer1.Enabled = True menggambar secara otomatis 'mulai AngleHolder = AngleHolder + 5 'menaikkan derajat sudut If AngleHolder = 360 Then ulang sudut kembali ke 0 AngleHolder = 0 If AngleHolder > 360 Then sudut kembali ke 0 'atur 'atur ulang Private Sub BUTNStop_Click() Timer1.Enabled = False menggambar secara otomatis Private Sub cepat_click() Timer1.Enabled = True 'berhenti AngleHolder = 0 TEXTAngle.Text = AngleHolder 'menampilkan derajat sudut Angle = AngleHolder perhitungan sudut Redraw derajat sudut Private Sub BUTNQuit_Click() sumbux.hide 'akhir program MDIForm1.Show Private Sub BUTNReset_Click() 'mengatur 'refresh tampilan Timer1.Interval = Timer1.Interval / 2 Private Sub Form_Load() Angle = 0 sudut 'Form1.ScaleMode = vbtwips AngleHolder = 355 'menginisialisasi Center.X = Pic3D.width / 2 'mengatur pusat (semua koordinat untuk picboxes harus sama Center.Y = Pic3D.height / 2 'di picboxes untuk bekerja) (yaitu dimensi X di kiri Center.Z = Pic3D.width / 2 'untuk picbox yang tepat harus sama dimensi X di atas ke bawah picbox) AngleHolder = 355 sudut menjadi 0 'atur ulang Center.X = Pic3Dkubus.width / 2 'mengatur pusat (semua koordinat untuk picboxes harus sama

82 Center.Y = Pic3Dkubus.height / 2 'di picboxes untuk bekerja) (yaitu dimensi X di kiri Center.Z = Pic3Dkubus.width / 2 'untuk picbox yang tepat harus sama dimensi X di atas ke bawah picbox) 'menetapkan poin untuk persegi panjang (bisa dilakukan dalam satu lingkaran cara yang lebih baik dll) 'Juga bentuknya tidak harus persegi panjang bisa bentuk apapun 'Balok 'depan Sides(0).Points(0).X = -40: Sides(0).Points(0).Y = -80: Sides(0).Points(0).Z = 40 Sides(0).Points(1).X = 80: Sides(0).Points(1).Y = -80: Sides(0).Points(1).Z = 40 Sides(0).Points(2).X = 80: Sides(0).Points(2).Y = 80: Sides(0).Points(2).Z = 40 Sides(0).Points(3).X = -40: Sides(0).Points(3).Y = 80: Sides(0).Points(3).Z = 40 'belakang Sides(1).Points(0).X = 80: Sides(1).Points(0).Y = -80: Sides(1).Points(0).Z = -40 Sides(1).Points(1).X = -40: Sides(1).Points(1).Y = -80: Sides(1).Points(1).Z = -40 Sides(1).Points(2).X = -40: Sides(1).Points(2).Y = 80: Sides(1).Points(2).Z = -40 Sides(1).Points(3).X = 80: Sides(1).Points(3).Y = 80: Sides(1).Points(3).Z = -40 'atas Sides(2).Points(0).X = -40: Sides(2).Points(0).Y = -80: Sides(2).Points(0).Z = -40 Sides(2).Points(1).X = 80: Sides(2).Points(1).Y = -80: Sides(2).Points(1).Z = -40 Sides(2).Points(2).X = 80: Sides(2).Points(2).Y = -80: Sides(2).Points(2).Z = 40 Sides(2).Points(3).X = -40: Sides(2).Points(3).Y = -80: Sides(2).Points(3).Z = 40 'bawah Sides(3).Points(0).X = -40: Sides(3).Points(0).Y = 80: Sides(3).Points(0).Z = 40 Sides(3).Points(1).X = 80: Sides(3).Points(1).Y = 80: Sides(3).Points(1).Z = 40 Sides(3).Points(2).X = 80: Sides(3).Points(2).Y = 80: Sides(3).Points(2).Z = -40 Sides(3).Points(3).X = -40: Sides(3).Points(3).Y = 80: Sides(3).Points(3).Z = -40 'kiri Sides(4).Points(0).X = -40: Sides(4).Points(0).Y = -80: Sides(4).Points(0).Z = -40 Sides(4).Points(1).X = -40: Sides(4).Points(1).Y = -80: Sides(4).Points(1).Z = 40

83 Sides(4).Points(2).X = -40: Sides(4).Points(2).Y = 80: Sides(4).Points(2).Z = 40 Sides(4).Points(3).X = -40: Sides(4).Points(3).Y = 80: Sides(4).Points(3).Z = -40 'kanan Sides(5).Points(0).X = 80: Sides(5).Points(0).Y = -80: Sides(5).Points(0).Z = 40 Sides(5).Points(1).X = 80: Sides(5).Points(1).Y = -80: Sides(5).Points(1).Z = -40 Sides(5).Points(2).X = 80: Sides(5).Points(2).Y = 80: Sides(5).Points(2).Z = -40 Sides(5).Points(3).X = 80: Sides(5).Points(3).Y = 80: Sides(5).Points(3).Z = 40 'kubus 'depan Sides1(0).Points(0).X = -40: Sides1(0).Points(0).Y = -40: Sides1(0).Points(0).Z = 40 Sides1(0).Points(1).X = 40: Sides1(0).Points(1).Y = -40: Sides1(0).Points(1).Z = 40 Sides1(0).Points(2).X = 40: Sides1(0).Points(2).Y = 40: Sides1(0).Points(2).Z = 40 Sides1(0).Points(3).X = -40: Sides1(0).Points(3).Y = 40: Sides1(0).Points(3).Z = 40 'belakang Sides1(1).Points(0).X = 40: Sides1(1).Points(0).Y = -40: Sides1(1).Points(0).Z = -40 Sides1(1).Points(1).X = -40: Sides1(1).Points(1).Y = -40: Sides1(1).Points(1).Z = -40 Sides1(1).Points(2).X = -40: Sides1(1).Points(2).Y = 40: Sides1(1).Points(2).Z = -40 Sides1(1).Points(3).X = 40: Sides1(1).Points(3).Y = 40: Sides1(1).Points(3).Z = -40 'atas Sides1(2).Points(0).X = -40: Sides1(2).Points(0).Y = -40: Sides1(2).Points(0).Z = -40 Sides1(2).Points(1).X = 40: Sides1(2).Points(1).Y = -40: Sides1(2).Points(1).Z = -40 Sides1(2).Points(2).X = 40: Sides1(2).Points(2).Y = -40: Sides1(2).Points(2).Z = 40 Sides1(2).Points(3).X = -40: Sides1(2).Points(3).Y = -40: Sides1(2).Points(3).Z = 40 'bawah Sides1(3).Points(0).X = -40: Sides1(3).Points(0).Y = 40: Sides1(3).Points(0).Z = 40 Sides1(3).Points(1).X = 40: Sides1(3).Points(1).Y = 40: Sides1(3).Points(1).Z = 40 Sides1(3).Points(2).X = 40: Sides1(3).Points(2).Y = 40: Sides1(3).Points(2).Z = -40

84 Sides1(3).Points(3).X = -40: Sides1(3).Points(3).Y = 40: Sides1(3).Points(3).Z = -40 'kiri Sides1(4).Points(0).X = -40: Sides1(4).Points(0).Y = -40: Sides1(4).Points(0).Z = -40 Sides1(4).Points(1).X = -40: Sides1(4).Points(1).Y = -40: Sides1(4).Points(1).Z = 40 Sides1(4).Points(2).X = -40: Sides1(4).Points(2).Y = 40: Sides1(4).Points(2).Z = 40 Sides1(4).Points(3).X = -40: Sides1(4).Points(3).Y = 40: Sides1(4).Points(3).Z = -40 'kanan Sides1(5).Points(0).X = 40: Sides1(5).Points(0).Y = -40: Sides1(5).Points(0).Z = 40 Sides1(5).Points(1).X = 40: Sides1(5).Points(1).Y = -40: Sides1(5).Points(1).Z = -40 Sides1(5).Points(2).X = 40: Sides1(5).Points(2).Y = 40: Sides1(5).Points(2).Z = -40 Sides1(5).Points(3).X = 40: Sides1(5).Points(3).Y = 40: Sides1(5).Points(3).Z = 40 'mengatur jumlah tepi untuk setiap sisi For I = 0 To 5 Sides(I).NumPoints = 3 For I = 0 To 5 Sides1(I).NumPoints = 3 'mengatur jumlah sisi pada objek NumObjectSides = 5 'menghitung dengan normal FindNormals 'membuat fungsi Lookup table untuk Cos dan Sin 'Metode ini jauh lebih cepat daripada menghitung setiap langkah CreateTables 'atur sudut dan menampilkan bentuk BUTNOKAY_Click Sub Redraw() 'bersihkan picboxes Pic3D.Cls Pic3Dkubus.Cls 'menggambar depan kotak dalam tampilan stasioner 'ulangi lingkaran 6 kali sekali untuk setiap sisi rotasi setiap titik harus 'dihitung untuk menemukan posisi normal masing-masing pihak 'untuk menentukan apakah itu terlihat For j = 0 To 5 '************************************* ************************* 'menggambar poin untuk atas ke bawah rotasi (rotasi di sekitar sumbu X)

85 '************************************* ************************* For I = 0 To Sides(0).NumPoints XSides(j).NumPoints = Sides(0).NumPoints XSides(j).Points(I).X = Sides(j).Points(I).X 'nilai x XSides(j).Points(I).Y = Sides(j).Points(I).Y * CosAng(Angle) - Sides(j).Points(I).Z * SinAng(Angle) 'nilai y XSides(j).Points(I).Z = Sides(j).Points(I).Z * CosAng(Angle) + Sides(j).Points(I).Y * SinAng(Angle) 'nilai z XSides(j).Normal.X = Sides(j).Normal.X XSides(j).Normal.Y = Sides(j).Normal.Y * CosAng(Angle) - Sides(j).Normal.Z * SinAng(Angle) 'nilai y XSides(j).Normal.Z = Sides(j).Normal.Z * CosAng(Angle) + Sides(j).Normal.Y * SinAng(Angle) 'nilai z For I = 0 To Sides1(0).NumPoints XSides1(j).NumPoints = Sides1(0).NumPoints XSides1(j).Points(I).X = Sides1(j).Points(I).X 'nilai x XSides1(j).Points(I).Y = Sides1(j).Points(I).Y * CosAng(Angle) - Sides1(j).Points(I).Z * SinAng(Angle) 'nilai y XSides1(j).Points(I).Z = Sides1(j).Points(I).Z * CosAng(Angle) + Sides1(j).Points(I).Y * SinAng(Angle) 'nilai z XSides1(j).Normal.X = Sides1(j).Normal.X XSides1(j).Normal.Y = Sides1(j).Normal.Y * CosAng(Angle) - Sides1(j).Normal.Z * SinAng(Angle) 'nilai y XSides1(j).Normal.Z = Sides1(j).Normal.Z * CosAng(Angle) + Sides1(j).Normal.Y * SinAng(Angle) 'nilai z If VisiblePlane(XSides(j), 0, 0, 1000) Then 'Buat garis di atas, rotasi atas ke bawah DrawShape XSides(j), Pic3D, "FRONT" If VisiblePlane(XSides1(j), 0, 0, 1000) Then 'Buat garis di atas, rotasi atas ke bawah DrawShape XSides1(j), Pic3Dkubus, "FRONT" '************************************* *********************** 'menggambar poin untuk rotasi kiri ke kanan (rotasi di sekitar sumbu Y)

86 '************************************* ************************* For I = 0 To Sides(0).NumPoints YSides(j).NumPoints = Sides(0).NumPoints YSides(j).Points(I).X = Sides(j).Points(I).X * CosAng(Angle) + Sides(j).Points(I).Z * SinAng(Angle) 'nilai x YSides(j).Points(I).Y = Sides(j).Points(I).Y 'nilai y YSides(j).Points(I).Z = Sides(j).Points(I).Z * CosAng(Angle) - Sides(j).Points(I).X * SinAng(Angle) 'nilai z YSides(j).Normal.X = Sides(j).Normal.X * CosAng(Angle) + Sides(j).Normal.Z * SinAng(Angle) 'nilai x YSides(j).Normal.Y = Sides(j).Normal.Y 'nilai y YSides(j).Normal.Z = Sides(j).Normal.Z * CosAng(Angle) - Sides(j).Normal.X * SinAng(Angle) 'nilai z For I = 0 To Sides1(0).NumPoints YSides1(j).NumPoints = Sides1(0).NumPoints YSides1(j).Points(I).X = Sides1(j).Points(I).X * CosAng(Angle) + Sides1(j).Points(I).Z * SinAng(Angle) 'nilai x YSides1(j).Points(I).Y = Sides1(j).Points(I).Y 'nilai y YSides1(j).Points(I).Z = Sides1(j).Points(I).Z * CosAng(Angle) - Sides1(j).Points(I).X * SinAng(Angle) 'nilai z YSides1(j).Normal.X = Sides1(j).Normal.X * CosAng(Angle) + Sides1(j).Normal.Z * SinAng(Angle) 'nilai x YSides1(j).Normal.Y = Sides1(j).Normal.Y 'nilai y YSides1(j).Normal.Z = Sides1(j).Normal.Z * CosAng(Angle) - Sides1(j).Normal.X * SinAng(Angle) 'nilai z 'Menggambar garis di kanan atas untuk melihat rotasi kiri '************************************* ************************* 'menggambar poin untuk rotasi menyamping (rotasi di sekitar sumbu Z) '************************************* ************************* 'Hapus komentar untuk melakukan perhitungan 'putar arah Z 'Rotate Z direction For I = 0 To Sides(0).NumPoints

87 ZSides(j).NumPoints = Sides(0).NumPoints ZSides(j).Points(I).X = Sides(j).Points(I).X * CosAng(Angle) + Sides(j).Points(I).Y * SinAng(Angle) 'nilai x ZSides(j).Points(I).Y = Sides(j).Points(I).Y * CosAng(Angle) - Sides(j).Points(I).X * SinAng(Angle) 'nilai y ZSides(j).Points(I).Z = Sides(j).Points(I).Z 'nilai z ZSides1(j).Points(I).Z = Sides1(j).Points(I).Z 'nilai z ZSides1(j).Normal.X = Sides1(j).Normal.X * CosAng(Angle) + Sides1(j).Normal.Y * SinAng(Angle) 'nilai x ZSides1(j).Normal.Y = Sides1(j).Normal.Y * CosAng(Angle) - Sides1(j).Normal.X * SinAng(Angle) 'nilai y ZSides1(j).Normal.Z = Sides1(j).Normal.Z 'nilai z ZSides(j).Normal.X = Sides(j).Normal.X * CosAng(Angle) + Sides(j).Normal.Y * SinAng(Angle) 'nilai x ZSides(j).Normal.Y = Sides(j).Normal.Y * CosAng(Angle) - Sides(j).Normal.X * SinAng(Angle) 'nilai y ZSides(j).Normal.Z = Sides(j).Normal.Z 'nilai z For I = 0 To Sides1(0).NumPoints ZSides1(j).NumPoints = Sides1(0).NumPoints ZSides1(j).Points(I).X = Sides1(j).Points(I).X * CosAng(Angle) + Sides1(j).Points(I).Y * SinAng(Angle) 'nilai x ZSides1(j).Points(I).Y = Sides1(j).Points(I).Y * CosAng(Angle) - Sides1(j).Points(I).X * SinAng(Angle) 'nilai y 'Putar diputar ke arah nilai-nilai X ke arah Z untuk membuat "efek berputar" For I = 0 To Sides(0).NumPoints Sides3D(j).NumPoints = Sides(0).NumPoints Sides3D(j).Points(I).X = XSides(j).Points(I).X * CosAng(Angle) + XSides(j).Points(I).Y * SinAng(Angle) 'nilai x Sides3D(j).Points(I).Y = XSides(j).Points(I).Y * CosAng(Angle) - XSides(j).Points(I).X * SinAng(Angle) 'nilai y Sides3D(j).Points(I).Z = XSides(j).Points(I).Z 'nilai z Sides3D(j).Normal.X = XSides(j).Normal.X * CosAng(Angle) +

88 XSides(j).Normal.Y * SinAng(Angle) 'nilai x Sides3D(j).Normal.Y = XSides(j).Normal.Y * CosAng(Angle) - XSides(j).Normal.X * SinAng(Angle) 'nilai y Sides3D(j).Normal.Z = XSides(j).Normal.Z 'nilai z For I = 0 To Sides1(0).NumPoints Sides3D1(j).NumPoints = Sides1(0).NumPoints Sides3D1(j).Points(I).X = XSides1(j).Points(I).X * CosAng(Angle) + XSides1(j).Points(I).Y * SinAng(Angle) 'nilai x Sides3D1(j).Points(I).Y = XSides1(j).Points(I).Y * CosAng(Angle) - XSides1(j).Points(I).X * SinAng(Angle) 'nilai y Sides3D1(j).Points(I).Z = XSides1(j).Points(I).Z 'nilai z j 'membentuk titik pusat picbox berwarna biru Pic3D.Circle (Center.X, Center.Y), 40, RGB(0, 0, 255) Pic3Dkubus.Circle (Center.X, Center.Y), 40, RGB(0, 0, 255) Private Sub intervalrotasi_click() Dim temp As String temp = InputBox("Masukkan Interval Rotasi (ms):", "Interval rotasi", Timer1.Interval) If Trim$(temp) <> "" Then Timer1.Enabled = True Timer1.Interval = temp Private Sub lambat_click() Timer1.Enabled = True Timer1.Interval = Timer1.Interval * 2 Sides3D1(j).Normal.X = XSides1(j).Normal.X * CosAng(Angle) + XSides1(j).Normal.Y * SinAng(Angle) 'nilai x Sides3D1(j).Normal.Y = XSides1(j).Normal.Y * CosAng(Angle) - XSides1(j).Normal.X * SinAng(Angle) 'nilai y Sides3D1(j).Normal.Z = XSides1(j).Normal.Z 'nilai z i Private Sub sudutrotasi_click() Dim temp As String temp = InputBox("masukkan sudut rotasi(derajat):", "Sudut Rotasi") If Trim$(temp) <> "" Then

89 AngleHolder = AngleHolder + temp 'menaikkan derajat sudut ReDim tmp(shape.numpoints) As POINTAPI If AngleHolder = 360 Then sudut kembali ke 0 AngleHolder = 0 'atur 'mengisi tmp.x menggambar poin sebagai nilai yang terjadi di x dir dll For I = 0 To shape.numpoints tmp(i).x = shape.points(i).x + 120 If AngleHolder > 360 Then kembali ke 0 MsgBox "batas rotasi sudut sampai 360,dan sudut akan kembali ke 0", vbinformation AngleHolder = 0 TEXTAngle.Text = AngleHolder 'menampilkan derajat sudut Angle = AngleHolder perhitungan sudut Redraw Private Sub Timer1_Timer() 'memutar persegi panjang BUTNOKAY_Click 'atur sudut 'atur Private Function DrawShape(shape As Verticies, PicBox As PictureBox, View As String) tmp(i).y = shape.points(i).y + 120 'membentuk solid polygon 'mengatur nilai cahaya (ambient + Max * (normal of plane * light position) / 2) Colr = 100 + 200 * (shape.normal.z) 'membuat objek solid PicBox.FillStyle = 0 'memilih warna menjadi warna kuning PicBox.FillColor = RGB(Colr, Colr, Colr 'membentuk polygon Polygon PicBox.hdc, tmp(0), shape.numpoints + 1 'membentuk objek transparan PicBox.FillStyle = 1 ElseIf View = "TOP" Then 'membentuk lppoints untuk memanggil fungsi win api ReDim tmp(shape.numpoints) As POINTAPI If View = "FRONT" Then 'membentuk lppoints untuk memanggil fungsi win api 'mengisi tmp.x menggambar poin sebagai nilai yang terjadi di x dir dll

90 For I = 0 To shape.numpoints tmp(i).x = shape.points(i).x + 120 tmp(i).y = shape.points(i).z + 120 'membentuk solid polygon 'mengatur nilai cahaya (ambient + Max * (normal of plane * light position) / 2) Colr = 100 + 200 * (shape.normal.y) 'membuat objek solid PicBox.FillStyle = 0 'memilih warna menjadi warna kuning PicBox.FillColor = RGB(Colr, Colr, Colr 'membentuk polygon Polygon PicBox.hdc, tmp(0), shape.numpoints + 1 'membentuk objek transparan PicBox.FillStyle = 1 ElseIf View = "SIDE" Then 'membentuk lppoints untuk memanggil fungsi win api ReDim tmp(shape.numpoints) As POINTAPI 'mengisi tmp.x menggambar poin sebagai nilai yang terjadi di x dir dll For I = 0 To shape.numpoints tmp(i).x = shape.points(i).z + 120 tmp(i).y = shape.points(i).y + 120 'membentuk solid polygon 'mengatur nilai cahaya (ambient + Max * (normal of plane * light position) / 2) Colr = 100 + 200 * (shape.normal.x) 'membuat objek solid PicBox.FillStyle = 0 'memilih warna menjadi warna kuning PicBox.FillColor = RGB(Colr, Colr, Colr 'membentuk polygon Polygon PicBox.hdc, tmp(0), shape.numpoints + 1 'membentuk objek transparan PicBox.FillStyle = 1 End Function Private Function VisiblePlane(shape As Verticies, CameraX As Integer, CameraY As Integer, CameraZ As Integer) 'mencari dot product D = (shape.normal.x * CameraX) + (shape.normal.y * CameraY) + (shape.normal.z * CameraZ) 'return true jika objek ada VisiblePlane = D >= 0 End Function Private Function FindNormals() For I = 0 To NumObjectSides With Sides(I)

91 Nx = (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).Z -.Points(0).Z) - (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).Y -.Points(0).Y) Nz = (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Y -.Points(0).Y) - (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).X -.Points(0).X) Ny = (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).X -.Points(0).X) - (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Z -.Points(0).Z) Nz = (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Y -.Points(0).Y) - (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).X -.Points(0).X) 2) Length = Sqr(Nx ^ 2 + Ny ^ 2 + Nz ^.Normal.X = Nx / Length.Normal.Y = Ny / Length.Normal.Z = Nz / Length End With 2) Length = Sqr(Nx ^ 2 + Ny ^ 2 + Nz ^ End Function.Normal.X = Nx / Length.Normal.Y = Ny / Length.Normal.Z = Nz / Length End With For I = 0 To NumObjectSides With Sides1(I) Private Function CreateTables() 'membentuk lookup table cosine dan sine For I = 0 To 359 CosAng(I) = Cos(I * (3.14159265358979 / 180)) 'konversi ke derajat SinAng(I) = Sin(I * (3.14159265358979 / 180)) 'konversi ke derajat Nx = (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).Z -.Points(0).Z) - (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).Y -.Points(0).Y) Ny = (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).X -.Points(0).X) - (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Z -.Points(0).Z) End Function Listing Program sumbuy (sumbuy.frm) Sub Redraw() 'bersihkan picboxes

92 Pic3D.Cls Pic3Dkubus.Cls 'menggambar depan kotak dalam tampilan stasioner 'ulangi lingkaran 6 kali sekali untuk setiap sisi rotasi setiap titik harus 'dihitung untuk menemukan posisi normal masing-masing pihak 'untuk menentukan apakah itu terlihat For j = 0 To 5 '************************************* ************************* 'menggambar poin untuk atas ke bawah rotasi (rotasi di sekitar sumbu X) '************************************* ************************* For I = 0 To Sides(0).NumPoints XSides(j).NumPoints = Sides(0).NumPoints XSides(j).Points(I).X = Sides(j).Points(I).X 'nilai x XSides(j).Points(I).Y = Sides(j).Points(I).Y * CosAng(Angle) - Sides(j).Points(I).Z * SinAng(Angle) 'nilai y XSides(j).Points(I).Z = Sides(j).Points(I).Z * CosAng(Angle) + Sides(j).Points(I).Y * SinAng(Angle) 'nilai z XSides(j).Normal.X = Sides(j).Normal.X XSides(j).Normal.Y = Sides(j).Normal.Y * CosAng(Angle) - Sides(j).Normal.Z * SinAng(Angle) 'nilai x XSides(j).Normal.Z = Sides(j).Normal.Z * CosAng(Angle) + Sides(j).Normal.Y * SinAng(Angle) 'nilai z For I = 0 To Sides1(0).NumPoints XSides1(j).NumPoints = Sides1(0).NumPoints XSides1(j).Points(I).X = Sides1(j).Points(I).X 'nilai x XSides1(j).Points(I).Y = Sides1(j).Points(I).Y * CosAng(Angle) - Sides1(j).Points(I).Z * SinAng(Angle) 'nilai y XSides1(j).Points(I).Z = Sides1(j).Points(I).Z * CosAng(Angle) + Sides1(j).Points(I).Y * SinAng(Angle) 'nilai z XSides1(j).Normal.X = Sides1(j).Normal.X XSides1(j).Normal.Y = Sides1(j).Normal.Y * CosAng(Angle) - Sides1(j).Normal.Z * SinAng(Angle) 'nilai y XSides1(j).Normal.Z = Sides1(j).Normal.Z * CosAng(Angle) + Sides1(j).Normal.Y * SinAng(Angle) 'nilai z

93 '************************************* ************************* 'menggambar poin untuk kiri ke kanan rotasi (rotasi di sekitar sumbu Y) '************************************* ************************* For I = 0 To Sides(0).NumPoints YSides(j).NumPoints = Sides(0).NumPoints YSides(j).Points(I).X = Sides(j).Points(I).X * CosAng(Angle) + Sides(j).Points(I).Z * SinAng(Angle) 'nilai x YSides(j).Points(I).Y = Sides(j).Points(I).Y 'nilai y YSides(j).Points(I).Z = Sides(j).Points(I).Z * CosAng(Angle) - Sides(j).Points(I).X * SinAng(Angle) 'nilai z YSides(j).Normal.X = Sides(j).Normal.X * CosAng(Angle) + Sides(j).Normal.Z * SinAng(Angle) 'nilai x YSides(j).Normal.Y = Sides(j).Normal.Y 'nilai y YSides(j).Normal.Z = Sides(j).Normal.Z * CosAng(Angle) - Sides(j).Normal.X * SinAng(Angle) 'nilai z For I = 0 To Sides1(0).NumPoints YSides1(j).NumPoints = Sides1(0).NumPoints YSides1(j).Points(I).X = Sides1(j).Points(I).X * CosAng(Angle) + Sides1(j).Points(I).Z * SinAng(Angle) 'nilai x YSides1(j).Points(I).Y = Sides1(j).Points(I).Y 'nilai y YSides1(j).Points(I).Z = Sides1(j).Points(I).Z * CosAng(Angle) - Sides1(j).Points(I).X * SinAng(Angle) 'nilai z YSides1(j).Normal.X = Sides1(j).Normal.X * CosAng(Angle) + Sides1(j).Normal.Z * SinAng(Angle) 'nilai x YSides1(j).Normal.Y = Sides1(j).Normal.Y 'nilai y YSides1(j).Normal.Z = Sides1(j).Normal.Z * CosAng(Angle) - Sides1(j).Normal.X * SinAng(Angle) 'nilai z If VisiblePlane(YSides(j), 0, 0, 1000) Then 'Buat garis di kanan depan untuk melihat rotasi kiri DrawShape YSides(j), Pic3D, "FRONT" If VisiblePlane(YSides1(j), 0, 0, 1000) Then 'Buat garis di kanan depan untuk melihat rotasi kiri DrawShape YSides1(j), Pic3Dkubus, "FRONT"

94 '************************************* ************************* 'menggambar poin untuk rotasi menyamping (rotasi di sekitar sumbu Z) For I = 0 To Sides1(0).NumPoints ZSides1(j).NumPoints = Sides1(0).NumPoints '************************************* ************************* 'Hapus komentar untuk melakukan perhitungan 'Putar arah Z For I = 0 To Sides(0).NumPoints ZSides(j).NumPoints = Sides(0).NumPoints ZSides(j).Points(I).X = Sides(j).Points(I).X * CosAng(Angle) + Sides(j).Points(I).Y * SinAng(Angle) 'nilai x ZSides(j).Points(I).Y = Sides(j).Points(I).Y * CosAng(Angle) - Sides(j).Points(I).X * SinAng(Angle) 'nilai y ZSides(j).Points(I).Z = Sides(j).Points(I).Z 'nilai z ZSides(j).Normal.X = Sides(j).Normal.X * CosAng(Angle) + Sides(j).Normal.Y * SinAng(Angle) 'nilai x ZSides(j).Normal.Y = Sides(j).Normal.Y * CosAng(Angle) - Sides(j).Normal.X * SinAng(Angle) 'nilai y ZSides(j).Normal.Z = Sides(j).Normal.Z 'nilai z ZSides1(j).Points(I).X = Sides1(j).Points(I).X * CosAng(Angle) + Sides1(j).Points(I).Y * SinAng(Angle) 'nilai x ZSides1(j).Points(I).Y = Sides1(j).Points(I).Y * CosAng(Angle) - Sides1(j).Points(I).X * SinAng(Angle) 'nilai y ZSides1(j).Points(I).Z = Sides1(j).Points(I).Z 'nilai z ZSides1(j).Normal.X = Sides1(j).Normal.X * CosAng(Angle) + Sides1(j).Normal.Y * SinAng(Angle) 'nilai x ZSides1(j).Normal.Y = Sides1(j).Normal.Y * CosAng(Angle) - Sides1(j).Normal.X * SinAng(Angle) 'nilai y ZSides1(j).Normal.Z = Sides1(j).Normal.Z 'nilai z 'Putar diputar ke arah nilai-nilai X ke arah Z untuk membuat "efek berputar" For I = 0 To Sides(0).NumPoints Sides3D(j).NumPoints = Sides(0).NumPoints Sides3D(j).Points(I).X = XSides(j).Points(I).X * CosAng(Angle) +

95 XSides(j).Points(I).Y * SinAng(Angle) 'nilai x Sides3D(j).Points(I).Y = XSides(j).Points(I).Y * CosAng(Angle) - XSides(j).Points(I).X * SinAng(Angle) 'nilai y Sides3D(j).Points(I).Z = XSides(j).Points(I).Z 'nilai z Sides3D(j).Normal.X = XSides(j).Normal.X * CosAng(Angle) + XSides(j).Normal.Y * SinAng(Angle) 'nilai x Sides3D(j).Normal.Y = XSides(j).Normal.Y * CosAng(Angle) - XSides(j).Normal.X * SinAng(Angle) 'nilai y Sides3D(j).Normal.Z = XSides(j).Normal.Z 'nilai z For I = 0 To Sides1(0).NumPoints Sides3D1(j).NumPoints = Sides1(0).NumPoints Sides3D1(j).Points(I).X = XSides1(j).Points(I).X * CosAng(Angle) + XSides1(j).Points(I).Y * SinAng(Angle) 'nilai x Sides3D1(j).Points(I).Y = XSides1(j).Points(I).Y * CosAng(Angle) - XSides1(j).Points(I).X * SinAng(Angle) 'nilai y Sides3D1(j).Points(I).Z = XSides1(j).Points(I).Z 'nilai z Sides3D1(j).Normal.X = XSides1(j).Normal.X * CosAng(Angle) + XSides1(j).Normal.Y * SinAng(Angle) 'nilai x Sides3D1(j).Normal.Y = XSides1(j).Normal.Y * CosAng(Angle) - XSides1(j).Normal.X * SinAng(Angle) 'nilai y Sides3D1(j).Normal.Z = XSides1(j).Normal.Z 'nilai z j Pic3D.Circle (Center.X, Center.Y), 40, RGB(0, 0, 255) Pic3Dkubus.Circle (Center.X, Center.Y), 40, RGB(0, 0, 255) Private Sub intervalrotasi_click() Dim temp As String temp = InputBox("Masukkan Interval Rotasi (ms):", "Interval rotasi", Timer1.Interval) If Trim$(temp) <> "" Then Timer1.Enabled = True Timer1.Interval = temp Private Sub lambat_click() Timer1.Enabled = True Timer1.Interval = Timer1.Interval * 2 Private Sub sudutrotasi_click() Dim temp As String

96 temp = InputBox("masukkan sudut rotasi(derajat):", "Sudut Rotasi") 'input interval rotasi If Trim$(temp) <> "" Then AngleHolder = AngleHolder + temp 'menaikkan sudut 'membentuk lppoints untuk memanggil fungsi win api ReDim tmp(shape.numpoints) As POINTAPI 'mengisi tmp.x menggambar poin sebagai nilai yang terjadi di x dir dll If AngleHolder = 360 Then sudut kembali ke 0 AngleHolder = 0 If AngleHolder > 360 Then kembali ke 0 'atur 'atur sudut For I = 0 To shape.numpoints tmp(i).x = shape.points(i).x + 120 tmp(i).y = shape.points(i).y + 120 'membentuk solid polygon MsgBox "batas rotasi sudut sampai 360,dan sudut akan kembali ke 0", vbinformation AngleHolder = 0 TEXTAngle.Text = AngleHolder 'menampilkan sudut Angle = AngleHolder perhitungan sudut Redraw Private Sub Timer1_Timer() 'memutar persegi panjang BUTNOKAY_Click 'atur Private Function DrawShape(shape As Verticies, PicBox As PictureBox, View As String) If View = "FRONT" Then 'mengatur nilai cahaya (ambient + Max * (normal of plane * light position) / 2) Colr = 100 + 200 * (shape.normal.z) 'membuat objek solid PicBox.FillStyle = 0 'memilih warna menjadi warna kuning PicBox.FillColor = RGB(Colr, Colr, Colr 'membentuk polygon Polygon PicBox.hdc, tmp(0), shape.numpoints + 1 'membentuk objek transparan PicBox.FillStyle = 1 ElseIf View = "TOP" Then 'membentuk lppoints untuk memanggil fungsi win api ReDim tmp(shape.numpoints) As POINTAPI

97 tmp(i).y = shape.points(i).y + 120 'mengisi tmp.x menggambar poin sebagai nilai yang terjadi di x dir dll For I = 0 To shape.numpoints tmp(i).x = shape.points(i).x + 120 tmp(i).y = shape.points(i).z + 120 'membentuk solid polygon 'membentuk solid polygon 'mengatur nilai cahaya (ambient + Max * (normal of plane * light position) Colr = 100 + 200 * (shape.normal.x) 'membuat objek solid PicBox.FillStyle = 0 'mengatur nilai cahaya (ambient + Max * (normal of plane * light position) Colr = 100 + 200 * (shape.normal.y) 'membuat objek solid / 2) 'memilih warna menjadi warna kuning PicBox.FillColor = RGB(Colr, Colr, Colr 'membentuk polygon / 2) PicBox.FillStyle = 0 'memilih warna menjadi warna kuning PicBox.FillColor = RGB(Colr, Colr, Colr 'membentuk polygon Polygon PicBox.hdc, tmp(0), shape.numpoints + 1 'membentuk objek transparan PicBox.FillStyle = 1 Polygon PicBox.hdc, tmp(0), shape.numpoints + 1 'membentuk objek transparan PicBox.FillStyle = 1 ElseIf View = "SIDE" Then 'membentuk lppoints untuk memanggil fungsi win api ReDim tmp(shape.numpoints) As POINTAPI 'mengisi tmp.x menggambar poin sebagai nilai yang terjadi di x dir dll End Function Private Function VisiblePlane(shape As Verticies, CameraX As Integer, CameraY As Integer, CameraZ As Integer) 'mencari dot product D = (shape.normal.x * CameraX) + (shape.normal.y * CameraY) + (shape.normal.z * CameraZ) 'return true jika objek ada VisiblePlane = D >= 0 End Function For I = 0 To shape.numpoints tmp(i).x = shape.points(i).z + 120 Private Function FindNormals()

98 For I = 0 To NumObjectSides With Sides(I) Nx = (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).Z -.Points(0).Z) - (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).Y -.Points(0).Y) 2) Length = Sqr(Nx ^ 2 + Ny ^ 2 + Nz ^.Normal.X = Nx / Length.Normal.Y = Ny / Length.Normal.Z = Nz / Length Ny = (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).X -.Points(0).X) - (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Z -.Points(0).Z) Nz = (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Y -.Points(0).Y) - (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).X -.Points(0).X) 2) Length = Sqr(Nx ^ 2 + Ny ^ 2 + Nz ^.Normal.X = Nx / Length.Normal.Y = Ny / Length.Normal.Z = Nz / Length End With For I = 0 To NumObjectSides With Sides1(I) Nx = (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).Z -.Points(0).Z) - (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).Y -.Points(0).Y) Ny = (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).X -.Points(0).X) - (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Z -.Points(0).Z) Nz = (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Y -.Points(0).Y) - (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).X -.Points(0).X) End With End Function Private Function CreateTables() 'membentuk lookup table cosine dan sine For I = 0 To 359 CosAng(I) = Cos(I * (3.14159265358979 / 180)) 'konversi ke derajat SinAng(I) = Sin(I * (3.14159265358979 / 180)) 'konversi ke derajat End Function Listing Program sumbuz (sumbuz.frm) Sub Redraw() 'bersihkan picboxes Pic3D.Cls Pic3Dkubus.Cls 'menggambar depan kotak dalam tampilan stasioner 'ulangi lingkaran 6 kali sekali untuk setiap sisi rotasi setiap titik harus 'dihitung untuk menemukan posisi normal masing-masing pihak

99 'untuk menentukan apakah itu terlihat For j = 0 To 5 '************************************* ************************* 'menggambar poin untuk atas ke bawah rotasi (rotasi di sekitar sumbu X) '************************************* ************************* For I = 0 To Sides(0).NumPoints XSides(j).NumPoints = Sides(0).NumPoints XSides(j).Points(I).X = Sides(j).Points(I).X 'nilai x XSides(j).Points(I).Y = Sides(j).Points(I).Y * CosAng(Angle) - Sides(j).Points(I).Z * SinAng(Angle) 'nilai y XSides(j).Points(I).Z = Sides(j).Points(I).Z * CosAng(Angle) + Sides(j).Points(I).Y * SinAng(Angle) 'nilai z XSides(j).Normal.X = Sides(j).Normal.X XSides(j).Normal.Y = Sides(j).Normal.Y * CosAng(Angle) - Sides(j).Normal.Z * SinAng(Angle) 'nilai y XSides(j).Normal.Z = Sides(j).Normal.Z * CosAng(Angle) + Sides(j).Normal.Y * SinAng(Angle) 'nilai z For I = 0 To Sides1(0).NumPoints XSides1(j).NumPoints = Sides1(0).NumPoints XSides1(j).Points(I).X = Sides1(j).Points(I).X 'nilai x XSides1(j).Points(I).Y = Sides1(j).Points(I).Y * CosAng(Angle) - Sides1(j).Points(I).Z * SinAng(Angle) 'nilai y XSides1(j).Points(I).Z = Sides1(j).Points(I).Z * CosAng(Angle) + Sides1(j).Points(I).Y * SinAng(Angle) 'nilai z XSides1(j).Normal.X = Sides1(j).Normal.X XSides1(j).Normal.Y = Sides1(j).Normal.Y * CosAng(Angle) - Sides1(j).Normal.Z * SinAng(Angle) 'nilai y XSides1(j).Normal.Z = Sides1(j).Normal.Z * CosAng(Angle) + Sides1(j).Normal.Y * SinAng(Angle) 'nilai z '************************************* ************************* 'menggambar poin untuk kiri ke kanan rotasi (rotasi di sekitar sumbu Y) '************************************* ************************* For I = 0 To Sides(0).NumPoints YSides(j).NumPoints = Sides(0).NumPoints YSides(j).Points(I).X = Sides(j).Points(I).X * CosAng(Angle) + Sides(j).Points(I).Z * SinAng(Angle) 'nilai x

100 YSides(j).Points(I).Y = Sides(j).Points(I).Y 'nilai y YSides(j).Points(I).Z = Sides(j).Points(I).Z * CosAng(Angle) - Sides(j).Points(I).X * SinAng(Angle) 'nilai z YSides(j).Normal.X = Sides(j).Normal.X * CosAng(Angle) + Sides(j).Normal.Z * SinAng(Angle) 'nilai x YSides(j).Normal.Y = Sides(j).Normal.Y 'nilai y YSides(j).Normal.Z = Sides(j).Normal.Z * CosAng(Angle) - Sides(j).Normal.X * SinAng(Angle) 'nilai z For I = 0 To Sides1(0).NumPoints YSides1(j).NumPoints = Sides1(0).NumPoints YSides1(j).Points(I).X = Sides1(j).Points(I).X * CosAng(Angle) + Sides1(j).Points(I).Z * SinAng(Angle) 'nilai x YSides1(j).Points(I).Y = Sides1(j).Points(I).Y 'nilai y YSides1(j).Points(I).Z = Sides1(j).Points(I).Z * CosAng(Angle) - Sides1(j).Points(I).X * SinAng(Angle) 'nilai z YSides1(j).Normal.X = Sides1(j).Normal.X * CosAng(Angle) + Sides1(j).Normal.Z * SinAng(Angle) 'nilai x YSides1(j).Normal.Y = Sides1(j).Normal.Y 'nilai y YSides1(j).Normal.Z = Sides1(j).Normal.Z * CosAng(Angle) - Sides1(j).Normal.X * SinAng(Angle) 'nilai z If VisiblePlane(XSides(j), 1000, 0, 0) Then 'Draw points in side, top to bottom rotation view DrawShape XSides(j), Pic3D, "SIDE" If VisiblePlane(XSides1(j), 1000, 0, 0) Then 'Draw points in side, top to bottom rotation view DrawShape XSides1(j), Pic3Dkubus, "SIDE" 'Menggambar garis di kanan atas untuk melihat rotasi kiri '************************************* ************************* 'menggambar poin untuk rotasi menyamping (rotasi di sekitar sumbu Z) '************************************* ************************* 'Hapus komentar untuk melakukan perhitungan 'putar arah Z

101 For I = 0 To Sides(0).NumPoints ZSides(j).NumPoints = Sides(0).NumPoints ZSides(j).Points(I).X = Sides(j).Points(I).X * CosAng(Angle) + Sides(j).Points(I).Y * SinAng(Angle) 'nilai x ZSides(j).Points(I).Y = Sides(j).Points(I).Y * CosAng(Angle) - Sides(j).Points(I).X * SinAng(Angle) 'nilai y ZSides(j).Points(I).Z = Sides(j).Points(I).Z 'nilai z ZSides(j).Normal.X = Sides(j).Normal.X * CosAng(Angle) + Sides(j).Normal.Y * SinAng(Angle) 'nilai x ZSides(j).Normal.Y = Sides(j).Normal.Y * CosAng(Angle) - Sides(j).Normal.X * SinAng(Angle) 'nilai y ZSides(j).Normal.Z = Sides(j).Normal.Z 'nilai z For I = 0 To Sides1(0).NumPoints ZSides1(j).NumPoints = Sides1(0).NumPoints ZSides1(j).Points(I).X = Sides1(j).Points(I).X * CosAng(Angle) + Sides1(j).Points(I).Y * SinAng(Angle) 'nilai x ZSides1(j).Points(I).Y = Sides1(j).Points(I).Y * CosAng(Angle) - Sides1(j).Points(I).X * SinAng(Angle) 'nilai y ZSides1(j).Points(I).Z = Sides1(j).Points(I).Z 'nilai z ZSides1(j).Normal.X = Sides1(j).Normal.X * CosAng(Angle) + Sides1(j).Normal.Y * SinAng(Angle) 'nilai x ZSides1(j).Normal.Y = Sides1(j).Normal.Y * CosAng(Angle) - Sides1(j).Normal.X * SinAng(Angle) 'nilai y ZSides1(j).Normal.Z = Sides1(j).Normal.Z 'nilai z 'Putar diputar ke arah nilai-nilai X ke arah Z untuk membuat "efek berputar" For I = 0 To Sides(0).NumPoints Sides3D(j).NumPoints = Sides(0).NumPoints Sides3D(j).Points(I).X = XSides(j).Points(I).X * CosAng(Angle) + XSides(j).Points(I).Y * SinAng(Angle) 'nilai x Sides3D(j).Points(I).Y = XSides(j).Points(I).Y * CosAng(Angle) - XSides(j).Points(I).X * SinAng(Angle) 'nilai y Sides3D(j).Points(I).Z = XSides(j).Points(I).Z 'nilai z Sides3D(j).Normal.X = XSides(j).Normal.X * CosAng(Angle) + XSides(j).Normal.Y * SinAng(Angle) 'nilai x

102 Sides3D(j).Normal.Y = XSides(j).Normal.Y * CosAng(Angle) - XSides(j).Normal.X * SinAng(Angle) 'nilai y Sides3D(j).Normal.Z = XSides(j).Normal.Z 'nilai z For I = 0 To Sides1(0).NumPoints Sides3D1(j).NumPoints = Sides1(0).NumPoints Sides3D1(j).Points(I).X = XSides1(j).Points(I).X * CosAng(Angle) + XSides1(j).Points(I).Y * SinAng(Angle) 'nilai x Sides3D1(j).Points(I).Y = XSides1(j).Points(I).Y * CosAng(Angle) - XSides1(j).Points(I).X * SinAng(Angle) 'nilai y Sides3D1(j).Points(I).Z = XSides1(j).Points(I).Z 'nilai z Sides3D1(j).Normal.X = XSides1(j).Normal.X * CosAng(Angle) + XSides1(j).Normal.Y * SinAng(Angle) 'nilai x Sides3D1(j).Normal.Y = XSides1(j).Normal.Y * CosAng(Angle) - XSides1(j).Normal.X * SinAng(Angle) 'nilai y Sides3D1(j).Normal.Z = XSides1(j).Normal.Z 'nilai z j 'membentuk titik pusat picbox berwarna biru Pic3D.Circle (Center.X, Center.Y), 40, RGB(0, 0, 255) Pic3Dkubus.Circle (Center.X, Center.Y), 40, RGB(0, 0, 255) Private Sub intervalrotasi_click() Dim temp As String temp = InputBox("Masukkan Interval Rotasi (ms):", "Interval rotasi", Timer1.Interval) If Trim$(temp) <> "" Then Timer1.Enabled = True Timer1.Interval = temp Private Sub lambat_click() Timer1.Enabled = True Timer1.Interval = Timer1.Interval * 2 Private Sub sudutrotasi_click() Dim temp As String temp = InputBox("masukkan sudut rotasi(derajat):", "Sudut Rotasi") If Trim$(temp) <> "" Then AngleHolder = AngleHolder + temp 'menaikkan derajat sudut If AngleHolder = 360 Then sudut kembali ke 0 AngleHolder = 0 'aturulang

103 If AngleHolder > 360 Then sudut kembali ke 0 MsgBox "batas rotasi sudut sampai 360,dan sudut akan kembali ke 0", vbinformation AngleHolder = 0 TEXTAngle.Text = AngleHolder 'menampilkan derajat sudut Angle = AngleHolder perhitungan sudut Redraw Private Sub Timer1_Timer() 'memutar persegi panjang BUTNOKAY_Click 'aturulang 'atur Private Function DrawShape(shape As Verticies, PicBox As PictureBox, View As String) 'membentuk solid polygon 'mengatur nilai cahaya (ambient + Max * (normal of plane * light position) / 2) Colr = 100 + 200 * (shape.normal.z) 'membuat objek solid PicBox.FillStyle = 0 'memilih warna menjadi warna kuning PicBox.FillColor = RGB(Colr, Colr, Colr 'membentuk polygon Polygon PicBox.hdc, tmp(0), shape.numpoints + 1 'membentuk objek transparan PicBox.FillStyle = 1 ElseIf View = "TOP" Then 'membentuk lppoints untuk memanggil fungsi win api ReDim tmp(shape.numpoints) As POINTAPI If View = "FRONT" Then 'membentuk lppoints untuk memanggil fungsi win api ReDim tmp(shape.numpoints) As POINTAPI 'mengisi tmp.x menggambar poin sebagai nilai yang terjadi di x dir dll For I = 0 To shape.numpoints tmp(i).x = shape.points(i).x + 120 tmp(i).y = shape.points(i).y + 120 'mengisi tmp.x menggambar poin sebagai nilai yang terjadi di x dir dll For I = 0 To shape.numpoints tmp(i).x = shape.points(i).x + 120 tmp(i).y = shape.points(i).z + 120 'membentuk solid polygon 'mengatur nilai cahaya (ambient + Max * (normal of plane * light position)

104 / 2) Colr = 100 + 200 * (shape.normal.y) 'membuat objek solid PicBox.FillStyle = 0 'memilih warna menjadi warna kuning PicBox.FillColor = RGB(Colr, Colr, Colr 'membentuk polygon Polygon PicBox.hdc, tmp(0), shape.numpoints + 1 'membentuk objek transparan PicBox.FillStyle = 1 ElseIf View = "SIDE" Then 'membentuk lppoints untuk memanggil fungsi win api ReDim tmp(shape.numpoints) As POINTAPI 'mengisi tmp.x menggambar poin sebagai nilai yang terjadi di x dir dll For I = 0 To shape.numpoints tmp(i).x = shape.points(i).z + 120 tmp(i).y = shape.points(i).y + 120 'membentuk solid polygon 'mengatur nilai cahaya (ambient + Max * (normal of plane * light position) Colr = 100 + 200 * (shape.normal.x) 'membuat objek solid PicBox.FillStyle = 0 'memilih warna menjadi warna kuning / 2) PicBox.FillColor = RGB(Colr, Colr, Colr 'membentuk polygon Polygon PicBox.hdc, tmp(0), shape.numpoints + 1 'membentuk objek transparan PicBox.FillStyle = 1 End Function Private Function VisiblePlane(shape As Verticies, CameraX As Integer, CameraY As Integer, CameraZ As Integer) 'mencari dot product D = (shape.normal.x * CameraX) + (shape.normal.y * CameraY) + (shape.normal.z * CameraZ) 'return true jika objek ada VisiblePlane = D >= 0 End Function Private Function FindNormals() For I = 0 To NumObjectSides With Sides(I) Nx = (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).Z -.Points(0).Z) - (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).Y -.Points(0).Y) Ny = (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).X -.Points(0).X) - (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Z -.Points(0).Z) Nz = (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Y -.Points(0).Y) -

105 (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).X -.Points(0).X) End Function 2) Length = Sqr(Nx ^ 2 + Ny ^ 2 + Nz ^.Normal.X = Nx / Length.Normal.Y = Ny / Length.Normal.Z = Nz / Length End With For I = 0 To NumObjectSides With Sides1(I) Private Function CreateTables() 'membentuk lookup table cosine dan sine For I = 0 To 359 CosAng(I) = Cos(I * (3.14159265358979 / 180)) 'konversi ke derajat SinAng(I) = Sin(I * (3.14159265358979 / 180)) 'konversi ke derajat End Function Nx = (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).Z -.Points(0).Z) - (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).Y -.Points(0).Y) Ny = (.Points(1).Z -.Points(0).Z) * (.Points(.NumPoints).X -.Points(0).X) - (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Z -.Points(0).Z) Nz = (.Points(1).X -.Points(0).X) * (.Points(.NumPoints).Y -.Points(0).Y) - (.Points(1).Y -.Points(0).Y) * (.Points(.NumPoints).X -.Points(0).X) 2) Length = Sqr(Nx ^ 2 + Ny ^ 2 + Nz ^.Normal.X = Nx / Length.Normal.Y = Ny / Length.Normal.Z = Nz / Length End With LISTING PROGRAM Sumbuxyz(sumbuxyz.frm) Sub Redraw() 'bersihkan picboxes Pic3D.Cls Pic3Dkubus.Cls 'menggambar depan kotak dalam tampilan stasioner 'ulangi lingkaran 6 kali sekali untuk setiap sisi rotasi setiap titik harus 'dihitung untuk menemukan posisi normal masing-masing pihak 'untuk menentukan apakah itu terlihat For j = 0 To 5 '************************************* *************************

106 'menggambar poin untuk atas ke bawah rotasi (rotasi di sekitar sumbu X) '************************************* ************************* For I = 0 To Sides(0).NumPoints XSides(j).NumPoints = Sides(0).NumPoints XSides(j).Points(I).X = Sides(j).Points(I).X 'nilai x XSides(j).Points(I).Y = Sides(j).Points(I).Y * CosAng(Angle) - Sides(j).Points(I).Z * SinAng(Angle) 'nilai y XSides(j).Points(I).Z = Sides(j).Points(I).Z * CosAng(Angle) + Sides(j).Points(I).Y * SinAng(Angle) 'nilai z XSides(j).Normal.X = Sides(j).Normal.X XSides(j).Normal.Y = Sides(j).Normal.Y * CosAng(Angle) - Sides(j).Normal.Z * SinAng(Angle) 'nilai y XSides(j).Normal.Z = Sides(j).Normal.Z * CosAng(Angle) + Sides(j).Normal.Y * SinAng(Angle) 'nilai z For I = 0 To Sides1(0).NumPoints XSides1(j).NumPoints = Sides1(0).NumPoints XSides1(j).Points(I).X = Sides1(j).Points(I).X 'nilai x XSides1(j).Points(I).Y = Sides1(j).Points(I).Y * CosAng(Angle) - Sides1(j).Points(I).Z * SinAng(Angle) 'nilai y XSides1(j).Points(I).Z = Sides1(j).Points(I).Z * CosAng(Angle) + Sides1(j).Points(I).Y * SinAng(Angle) 'nilai z XSides1(j).Normal.X = Sides1(j).Normal.X XSides1(j).Normal.Y = Sides1(j).Normal.Y * CosAng(Angle) - Sides1(j).Normal.Z * SinAng(Angle) 'nilai y XSides1(j).Normal.Z = Sides1(j).Normal.Z * CosAng(Angle) + Sides1(j).Normal.Y * SinAng(Angle) 'nilai z 'periksa untuk melihat apakah pesawat terlihat jika demikian menarik itu '************************************* ************************* 'menggambar poin untuk kiri ke kanan rotasi (rotasi di sekitar sumbu Y) '************************************* ************************* For I = 0 To Sides(0).NumPoints YSides(j).NumPoints = Sides(0).NumPoints YSides(j).Points(I).X = Sides(j).Points(I).X * CosAng(Angle) + Sides(j).Points(I).Z * SinAng(Angle) 'nilai x YSides(j).Points(I).Y = Sides(j).Points(I).Y 'nilai y

107 YSides(j).Points(I).Z = Sides(j).Points(I).Z * CosAng(Angle) - Sides(j).Points(I).X * SinAng(Angle) 'nilai z YSides(j).Normal.X = Sides(j).Normal.X * CosAng(Angle) + Sides(j).Normal.Z * SinAng(Angle) 'nilai x YSides(j).Normal.Y = Sides(j).Normal.Y 'nilai y YSides(j).Normal.Z = Sides(j).Normal.Z * CosAng(Angle) - Sides(j).Normal.X * SinAng(Angle) 'nilai z For I = 0 To Sides1(0).NumPoints YSides1(j).NumPoints = Sides1(0).NumPoints YSides1(j).Points(I).X = Sides1(j).Points(I).X * CosAng(Angle) + Sides1(j).Points(I).Z * SinAng(Angle) 'nilai x YSides1(j).Points(I).Y = Sides1(j).Points(I).Y 'nilai y YSides1(j).Points(I).Z = Sides1(j).Points(I).Z * CosAng(Angle) - Sides1(j).Points(I).X * SinAng(Angle) 'nilai z YSides1(j).Normal.X = Sides1(j).Normal.X * CosAng(Angle) + Sides1(j).Normal.Z * SinAng(Angle) 'nilai x YSides1(j).Normal.Y = Sides1(j).Normal.Y 'nilai y YSides1(j).Normal.Z = Sides1(j).Normal.Z * CosAng(Angle) - Sides1(j).Normal.X * SinAng(Angle) 'nilai z 'periksa untuk melihat apakah pesawat terlihat jika demikian menarik itu 'Menggambar garis di kanan atas untuk melihat rotasi kiri '************************************* ************************* 'menggambar poin untuk rotasi menyamping (rotasi di sekitar sumbu Z) '************************************* ************************* 'Hapus komentar untuk melakukan perhitungan 'putar arah Z For I = 0 To Sides(0).NumPoints ZSides(j).NumPoints = Sides(0).NumPoints ZSides(j).Points(I).X = Sides(j).Points(I).X * CosAng(Angle) + Sides(j).Points(I).Y * SinAng(Angle) 'nilai x ZSides(j).Points(I).Y = Sides(j).Points(I).Y * CosAng(Angle) - Sides(j).Points(I).X * SinAng(Angle) 'nilai y ZSides(j).Points(I).Z = Sides(j).Points(I).Z 'nilai z ZSides(j).Normal.X = Sides(j).Normal.X * CosAng(Angle) + Sides(j).Normal.Y * SinAng(Angle) 'nilai x