Top Banner
IKG3H2 Computer Graphics Gnuplot for scientific computing DR. PUTU HARRY GUNAWAN
20

IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Apr 05, 2019

Download

Documents

hoangkhuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

IKG3H2

Computer GraphicsGnuplot for scientific computingDR. PUTU HARRY GUNAWAN

Page 2: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Info penting!

Keputusan, setelah UTS sampai akhir UAS, mata kuliah ini akan tetap

mempelajari GNUPLOT dan C/C++. Bertujuan untuk memperdalam/

memfokuskan visualisasi sains dengan GNUPLOT dan review C/C++

dalam minimal pemodelan sederhana tanpa proses numerik.

Serta mengurangi proses mahasiswa dalam mempelajari Software

lain yang terlalu banyak. Sehingga tidak memerlukan proses

instalasi software dan proses belajar awal penggunaan Software.

Sampai UAS, proses belajar mahasiswa dalam bentuk kelompok

(Max 3 orang).

UAS berupa presentasi final project dihadapan (Max tiga dosen) langsung dalam waktu max 20 menit.

Page 3: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Next

1. Solving Problems (Mid-Term

Exam)

Page 4: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Soal A 1

Sebuah mobil bergerak melalui jalan yang menanjak dan menurun

menyerupai sebuah grafik sinusoidal seperti pada gambar di

bawah ini:

Page 5: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Soal A 1

Jika diketahui domain pengamatan Ω = [−200 : 1200] km, maka:

a) Tentukanlah fungsi f(x) = sin(?/?) seperti gambar diatas!

b) Buatlah gambar seperti Figure 1 di atas dengan posisi dan jeniskendaraan bebas (anda bisa improve sendiri, dalam hal ini bisamenggunakan gambar mobil atau motor)! Gunakan syntaxberikut untuk menampilkan gambar kedalam gnuplot:

plot "car.jpeg" binary filetype=jpg center=(250,225) with rgbimagenotitle

c) Buatlah simulasi untuk pergerakan sebuah kendaraan yang melaluidaerah yang telah didefinisikan! (Jika memungkinkan, gambarkendaraan diharapkan bisa menukik ke bawah atau keatas jika sedang berada di turunan atau tanjakan).

Page 6: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Solusi A 1 bagian a

Fungsi jalannya adalah

𝑓 𝑥 = 100 sin𝜋𝑥

500+ 100

Page 7: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Solusi A 1 bagian c

Seperti biasa kita perlukan syntax basic untuk C/C++

#include <stdio.h>

#include <math.h>

int main()

//Write code Here

return 0;

Page 8: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Solusi A 1 bagian c

Selanjutnya, kita definisikan domain beserta fungsi

jalan

#include <stdio.h>

#include <math.h>

int main()

double Nx= 1400; double dx=1;

double* x= new double[Nx+1];

double* y= new double[Nx+1];

for(int i=1; i<=Nx; i++)

x[i]=i*dx -200;

y[i]=sin(3.14*x[i]/500)*100+100;

return 0;

Domain Ω = −200: 1200 , berarti kita

memiliki panjang jalur

L = 1200 − −200 = 1400

Jika kita mendiskritkan domain

sebesar dx=1 kita akan punya

banyak titik sebanyak

𝑁𝑥 =𝐿

𝑑𝑥=1400

1= 1400

Page 9: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Exercise

Plot the x and y functions!

Page 10: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Solusi A 1 bagian c

Untuk mensimulasikan benda bergerak, kita perlu definisikan loop

while/for seperti pada slide kuliah sebelumnya.

#include <stdio.h>

#include <math.h>

int main()

. . . . .

for(int i=1; i<=Nx; i++)

x[i]=i*dt -200;

y[i]=sin(3.14*x[i]/500)*100+100;

int Nt=Nx;

for(int waktu=1; waktu <=Nt; waktu++)

//Plot the figure

return 0;

Untuk mebuat simulasi mobil

bergerak per detik per titik diskrit,

maka diperlukan step waktu untuk

memvisualkan mobil. Dengan

memilih

𝑁𝑡 = 𝑁𝑥

Page 11: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Solusi A 1 bagian c Bagaimana cara plot mobil??

FILE* pipe = popen("gnuplot", "w");

if (pipe != NULL)

fprintf(pipe, "reset\n");

fprintf(pipe, "set xrange[-200:1200]\n");

fprintf(pipe, "set yrange[0:600]\n");

fprintf(pipe, "plot 'car.jpeg' binary filetype=jpg center=(%g,%g) with rgbimage

notitle, '-' with lines lw 3 notitle\n",x[waktu],y[waktu] +50);

for(int i=1; i<=Nx; i++)

fprintf(pipe,"%g %g\n",x[i],y[i]);

fprintf(pipe,"end\n");

fprintf(pipe, "pause 0.5\n");

fflush(pipe);

else puts("Could not open the file\n");

pclose(pipe);

Untuk menghasilkan gambar yang bergerak

tentunya kita harus mengatur posisi tengah

gambar sesuai dengan waktu jalan,

dikarenakan step waktu = step spasial (lihatwarna kuning). (50 digunakan untuk

mengatur ketinggian gambar).

Supaya jalan tetap terlihat, Kurva y, harus

tetap ditampilkan tiap detik waktu, maka

tambahkan syntax setelahnya (lihat warna

merah).

Page 12: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Hasil 1

Page 13: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Solusi A 1 bagian c

Bagaimana cara mobil bisa menukik naik turun sesuai dengan

kondisi jalan?

Note: Untuk membuat mobil menukik kebawah atau keatas, kitaperlu pengetahuan yakni arah kepala mobil harus sesuai dengan

arah gradient dari kurva.

Gradiennya 0

Page 14: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Solusi A 1 bagian c

Jadi untuk mentukan arah kepala mobil perlu gradient

dari 𝑓 𝑥 yaitu

𝑑𝑓 𝑥

𝑑𝑥= 𝑓′ 𝑥 =

100 𝜋

500cos

𝜋𝑥

500

Selanjutnya perlu perbaikan di bagian program

Page 15: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Solusi A 1 bagian c Modifikasi tambahan variabel

#include <stdio.h>

#include <math.h>

int main()

double Nx= 1400;

double* x= new double[Nx+1];

double* y= new double[Nx+1];

double* Grady= new double[Nx+1];

for(int i=1; i<=Nx; i++)

x[i]=i*dt -200;

y[i]=sin(3.14*x[i]/500)*100+100;

Grady[i]=100*3.14*cos(3.14*x[i]/500)/500;

. . . .

return 0;

Tambahkan variabe baru yakni

Grady sebagai fungsi untuk rotasi

kepala mobil

Page 16: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Solusi A 1 bagian c Modifikasi bagian Plot

fprintf(pipe, "plot 'car.jpeg' binary filetype=jpg center=(%g,%g) rotation=%g with rgbimage

notitle, '-' with lines lw 3 notitle\n",x[waktu],y[waktu] +50, Grady[waktu]);

Modifikasi di bagian plot sangatlah

sederhana, hanya menambahkan syntax

rotation dengan besarannya senilai dengan

variable Grady (lihat warna merah).

Page 17: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Hasil 2

Page 18: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Exercise

Buatlah laporan dengan detail (Berkelompok) untuk memecahkan

kasus yang ada di soal UTS Tipe A soal 3

Buat laporan sedetail mungkin jelaskan dengan kata2 sendiri.

Dikumpul laporan hardcopy, serta Softcopy laporan dan Program

lengkap dengan hasilnya yaitu videonya saja yang diupload di

Gdrive.

Page 19: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan
Page 20: IKG3H2 Computer Graphics - Simulation Laboratoryphg-simulation-laboratory.com/wp-content/uploads/2016/03/Week7... · Soal A 1 Sebuah mobil bergerak melalui jalan yang menanjak dan

Thank you