Selamat datang di ForSa! Forum diskusi seputar sains, teknologi dan pendidikan Indonesia.

Welcome to Forum Sains Indonesia. Please login or sign up.

Maret 29, 2024, 04:05:04 PM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 207
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 0
Guests: 183
Total: 183

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

Menentukan titik garis lurus

Dimulai oleh Farabi, Oktober 29, 2011, 10:50:38 PM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

Farabi

Sejujurnya saya kurang paham apa fungsi dari persamaan garis. Tapi kalau anda bertanya,bagaimana cara membuat sebuah garis pada program komputer, ini saya lumayan paham.

Terminologi(Penjelasan istilah istilah)
Supaya saya yakin kita semua sepemahaman, pertama kita harus menyamakan pemahaman dulu.

Definisi titik adalah, sebuah struktur dengan anggota X dan Y yang menyatakan suatu posisi dalam koordinat 2 Dimensi.
Definisi Delta adalah, selisih dari komponen Titik. Selisih dari komponen X adalah Delta X, dan selisih dari komponen Y adalah Delta Y.
Definisi Jarak adalah, Panjang garis lurus yang didapat dari persamaan C^2=X^2+Y^2
Definisi Gradien adalah, rasio antara Komponen Delta dibandingkan dengan Jarak.


Untuk menggambar titik sepanjang 10 unit, maka anda akan membutuhkan 10 buah titik, yang berarti 10 kali anda menghitung.
Langkah langkah nya adalah
1. Dapatkan Delta dari 2 Titik.
2. Hitung Jarak.
3. Ulang perkalian gradien dari 0 sampai jarak tercapai.

Contoh.

A(10,10)
B(13,14)

Untuk menghitung Delta, kita hanya perlu untuk mengurangi Tiap tiap komponen dari tiap tiap titik. X2-X1 dan Y2-Y1 kita dapat hasil
D (3,4)

Dimana Delta X adalah 3 dan Delta Y adalah 4. Sekarang dari komponen tersebut kita hitung jarak.
J=akarQuadrat( (X*X) + (Y*Y) )
J=5

Sekarang kita telah mendapatkan jaraknya, yaitu 5. Jika jaraknya adalah 5, maka titik yang akan kita gambar adalah 5 buah titik, sehingga tergambar sebuah garis, dari titik A ke titik B.

Rumus mendapatkan posisi titik Titik Ke-n=(DX/J)*n untuk X dan (DY/J)*n untuk Y
Titik Ke-1: ( (3/5)*1 , (4/5)*1)
Titik Ke-2: ( (3/5)*2 , (4/5)*2)
Titik Ke-3: ( (3/5)*3 , (4/5)*3)
Titik Ke-4: ( (3/5)*4 , (4/5)*4)
Titik Ke-5: ( (3/5)*5 , (4/5)*5)

Demikianlah cara untuk menggambar sebuah titik dalam program komputer.
Raffaaaaael, raffaaaaael, fiiii dunya la tadzikro. Rafaael. Fi dunya latadzikro bil hikmah, wa bil qiyad

Maa lahi bi robbi. Taaqi ilaa robbi. La taaqwa, in anfusakum minallaaahi.

mhyworld

Saya jadi ingat waktu dulu bikin game dengan Pascal berdasarkan bukunya Agustinus Nalwan.
Untuk menampilkan sebuah garis di layar monitor, perlu diingat bahwa kita melakukan pembulatan karena elemen visual monitor terdiri dari pixel-pixel yang bersifat atomik. Maksudnya kita tidak bisa membuat satu pixel menampilkan lebih dari satu warna dalam suatu saat.

Kalau kita membuat garis dengan program jadul seperti Pascal menggunakan fungsi standarnya (CRT), kita akan menjumpai situasi berikut :
Untuk menampilkan garis dari titik (0,0) ke titik (4,4) dengan warna hitam dan background putih, pixel yang diberi warna hitam adalah titik (0,0),(1,1),(2,2),(3,3), dan(4,4). Dengan demikian hanya akan ada 5 pixel yang menyala. Padahal kalau dihitung secara geometri, panjang garisnya seharusnya menjadi 5√2 = 7.07 pixel. Oleh karena itu garisnya akan tampak lebih kurus dibanding yang seharusnya.

Untuk mengatasi hal ini, program animasi modern telah menerapkan metode anti-aliasing. Pada dasarnya metode ini memberikan warna pada pixel di sekitar garis yang akan dibuat dengan mencampur warna garis dan warna background dengan perbandingan tertentu sesuai jarak teoritis antara pusat pixel dan garis, serta ketebalan garis yang akan ditampilkan. Pada contoh kasus di atas, titik (0,1),(1,0),(1,2),(2,1),(2,3),(3,2),(3,4), dan (4,3) akan diberi warna abu-abu dengan greyscale tertentu sesuai ketebalan garis yang akan dibuat. Efek anti-aliasing dapat dilihat saat kita menampilkan print preview dari sebuah dokumen office (misal Word atau Excel) yang menampilkan grafik berupa garis (atau true type font) dan mengubah-ubah zoomnya. Efek tersebut tampak dengan jelas jika kita menggunakan tool magnifier dengan skala perbesaran tinggi (400% atau lebih).

Program animasi seperti Flash sudah memasukkan fungsi anti-aliasing secara buil-tin, sehingga programmer tidak perlu lagi dipusingkan oleh hal-hal di atas. Di samping itu, koordinat yang kita masukkan dalam program Flash bukanlah koordinat absolute monitor, melainkan koordinat relatif layar Flash yang telah memiliki fasilitas zoom bawaan sehingga end user dapat mengubah-ubah posisi dan ukuran tampilan saat runtime tanpa menambah beban programmer.
once we have eternity, everything else can wait

Mtk Kerajaan Mataram

Kalau saya ingin menggambar segitiga sama kaki dengan titik2 A(1,1), B(5,1), dan C(3,4) yang berarti terdiri dari tiga garis. Lalu segitiga tersebut diputar dengan pusat putar di A sejauh 180 derajat berlawanan arah jarum jam dengan control timer, bagaimana menyusun code-nya?

Farabi

#3
Mtk Kerajaan:
Anda harus tahu dulu berapa derajat sudut tiap tiap titik dengan jaraknya. Setelah itu, baru diputarkan dengan menggunakan derajat putar yang sama.

Untuk menentukan sudut rumusnya:
Atan(Dx/DY) Ini kalau dikomputer IBM hasilnya biasanya radian, bukan langsung Derajat. Untuk dirumah ke derajat rumusnya Dg=Rad*(360/PHI)
Raffaaaaael, raffaaaaael, fiiii dunya la tadzikro. Rafaael. Fi dunya latadzikro bil hikmah, wa bil qiyad

Maa lahi bi robbi. Taaqi ilaa robbi. La taaqwa, in anfusakum minallaaahi.

Farabi

#4
Jadi intinya, dalam pertrigonometrian ini, tidak lain dari cara bagaimana cara mendistribusikan 1.

Titik tegak lurus ke atas adalah, (0,1) dan titik vertikal ke kanan adalah (1,0). Sin dan Cos tidak lain hanya membagi angka 1 ini sedemikian rupa,supaya panjangnya tetap sama, cuma begitu saja. Ciri dari panjang yang tetap dari sebuah benda yang berputar dari pivot yang sama adalah, jejak yang berbentuk lingkaran.
Raffaaaaael, raffaaaaael, fiiii dunya la tadzikro. Rafaael. Fi dunya latadzikro bil hikmah, wa bil qiyad

Maa lahi bi robbi. Taaqi ilaa robbi. La taaqwa, in anfusakum minallaaahi.

Farabi

Kutip dari: mhyworld pada Oktober 31, 2011, 02:35:36 PM
Saya jadi ingat waktu dulu bikin game dengan Pascal berdasarkan bukunya Agustinus Nalwan.
Untuk menampilkan sebuah garis di layar monitor, perlu diingat bahwa kita melakukan pembulatan karena elemen visual monitor terdiri dari pixel-pixel yang bersifat atomik. Maksudnya kita tidak bisa membuat satu pixel menampilkan lebih dari satu warna dalam suatu saat.

Kalau kita membuat garis dengan program jadul seperti Pascal menggunakan fungsi standarnya (CRT), kita akan menjumpai situasi berikut :
Untuk menampilkan garis dari titik (0,0) ke titik (4,4) dengan warna hitam dan background putih, pixel yang diberi warna hitam adalah titik (0,0),(1,1),(2,2),(3,3), dan(4,4). Dengan demikian hanya akan ada 5 pixel yang menyala. Padahal kalau dihitung secara geometri, panjang garisnya seharusnya menjadi 5√2 = 7.07 pixel. Oleh karena itu garisnya akan tampak lebih kurus dibanding yang seharusnya.

Untuk mengatasi hal ini, program animasi modern telah menerapkan metode anti-aliasing. Pada dasarnya metode ini memberikan warna pada pixel di sekitar garis yang akan dibuat dengan mencampur warna garis dan warna background dengan perbandingan tertentu sesuai jarak teoritis antara pusat pixel dan garis, serta ketebalan garis yang akan ditampilkan. Pada contoh kasus di atas, titik (0,1),(1,0),(1,2),(2,1),(2,3),(3,2),(3,4), dan (4,3) akan diberi warna abu-abu dengan greyscale tertentu sesuai ketebalan garis yang akan dibuat. Efek anti-aliasing dapat dilihat saat kita menampilkan print preview dari sebuah dokumen office (misal Word atau Excel) yang menampilkan grafik berupa garis (atau true type font) dan mengubah-ubah zoomnya. Efek tersebut tampak dengan jelas jika kita menggunakan tool magnifier dengan skala perbesaran tinggi (400% atau lebih).

Program animasi seperti Flash sudah memasukkan fungsi anti-aliasing secara buil-tin, sehingga programmer tidak perlu lagi dipusingkan oleh hal-hal di atas. Di samping itu, koordinat yang kita masukkan dalam program Flash bukanlah koordinat absolute monitor, melainkan koordinat relatif layar Flash yang telah memiliki fasilitas zoom bawaan sehingga end user dapat mengubah-ubah posisi dan ukuran tampilan saat runtime tanpa menambah beban programmer.

Enggak ah, bener 5 pixel, bukan 7 pixel, kalau panjangnya 7, berarti DX+DY lebih dari 49.
Raffaaaaael, raffaaaaael, fiiii dunya la tadzikro. Rafaael. Fi dunya latadzikro bil hikmah, wa bil qiyad

Maa lahi bi robbi. Taaqi ilaa robbi. La taaqwa, in anfusakum minallaaahi.

Farabi

#6
Ahhah, sekarang saya ngerti matrix ini.

M1=
|1 0|
|0 1|

Dengan kaitannya antara perkalian TITIK atau VEKTOR (X,Y)

Untuk Rotasi berarti
|Sin(A) 0|  X
|0 Cos(A)|  Y

Eh bentar, kok ada yang salah Nih ;D
Raffaaaaael, raffaaaaael, fiiii dunya la tadzikro. Rafaael. Fi dunya latadzikro bil hikmah, wa bil qiyad

Maa lahi bi robbi. Taaqi ilaa robbi. La taaqwa, in anfusakum minallaaahi.

Farabi

Selanjutnya, yang bikin otak juwet dan susah dipahami, apalagi masuk diakal, trigonometri 3 Dimensi. ;D
Raffaaaaael, raffaaaaael, fiiii dunya la tadzikro. Rafaael. Fi dunya latadzikro bil hikmah, wa bil qiyad

Maa lahi bi robbi. Taaqi ilaa robbi. La taaqwa, in anfusakum minallaaahi.

mhyworld

Kutip dari: Farabi pada November 05, 2011, 07:02:30 AM
Mtk Kerajaan:
Anda harus tahu dulu berapa derajat sudut tiap tiap titik dengan jaraknya. Setelah itu, baru diputarkan dengan menggunakan derajat putar yang sama.

Untuk menentukan sudut rumusnya:
Atan(Dx/DY) Ini kalau dikomputer IBM hasilnya biasanya radian, bukan langsung Derajat. Untuk dirumah ke derajat rumusnya Dg=Rad*(360/PHI)
Koreksi dikit
deg=rad*(180/pi)
once we have eternity, everything else can wait

mhyworld

Kutip dari: Farabi pada November 05, 2011, 07:38:26 AM
Enggak ah, bener 5 pixel, bukan 7 pixel, kalau panjangnya 7, berarti DX+DY lebih dari 49.
Dalam koordinat cartesian, garis miring yang menghubungkan titik (0,0) dan (5,5) memiliki panjang 5√2 = 7.07
once we have eternity, everything else can wait

Farabi

Raffaaaaael, raffaaaaael, fiiii dunya la tadzikro. Rafaael. Fi dunya latadzikro bil hikmah, wa bil qiyad

Maa lahi bi robbi. Taaqi ilaa robbi. La taaqwa, in anfusakum minallaaahi.

Farabi

Kutip dari: mhyworld pada November 05, 2011, 04:35:43 PM
Dalam koordinat cartesian, garis miring yang menghubungkan titik (0,0) dan (5,5) memiliki panjang 5√2 = 7.07

Oh iya betul, saya salah lihat, saya kira 3,4 ;D Iya betul. Tapi kalau saya biasanya hantem aja gambarnya 7, baru sisi sisi titik terakhir di blur. Kalau anda rumus anti aliasingnya tahu tidak?
Raffaaaaael, raffaaaaael, fiiii dunya la tadzikro. Rafaael. Fi dunya latadzikro bil hikmah, wa bil qiyad

Maa lahi bi robbi. Taaqi ilaa robbi. La taaqwa, in anfusakum minallaaahi.

mhyworld

Tampaknya pembahasan kita sudah menjurus ke masalah teknis.
Untuk permulaan baca saja [pranala luar disembunyikan, sila masuk atau daftar.]
Pembahasannya terlalu panjang kalau ditulis di sini.
Untuk implementasinya bisa diunduh di [pranala luar disembunyikan, sila masuk atau daftar.]
Sebenarnya kalo mau cari tinggal googling aja. :kribo:

once we have eternity, everything else can wait

nandaz

Maaf, saya mau komen mengenai titik :). Bukannya titik ada disetiap dimensi? mulai dari satu dimensi ke dimensi berapapun? perbedaannya adalah dalam segi ke akuratan penempatan. kalo tidak ada titik yang kontiniu di dimensi satu, maka tidak akan ada garis, dan kalo tidak ada garis maka tidak akan ada bidang begitu seterusnya hingga kita dapat menafsirkan begini bahwa suatu benda sesungguhnya terdiri dari titik-titik yang tak terhingga banyaknya....
hmmm?  ??? bagaimana mungkin? benda itu dapat kita lihat dan dapat kita ukur. terus kenapa  benda itu terdiri dari takterhingga titik, seolah benda itu hampir seluas alam semesta? ada yang bisa menjawabnya?
starting by doing what is necessary, then what is possible and suddenly you are doing the impossible...
\dia\cal{ANONYMOUS}\cl

Farabi

Monitor adalah bidang 2 Dimensi, tapi kita bisa menciptakan ilusi 3D melalui penempatan titik. Itupun baru bisa dicapai setelah kita bermain dengan warna, kalau warnanya flat, ilusi 3D ini tidak akan tampak kalau semua warnanya datar. Tapi dengan menggunakan gradiasi warna, entah semakin dalam semakin terang atau gelap, maka otak kita akan mulai menafsirkan bahwa yang didepan mata adalah Object.

Masalahnya untuk menyatakan bahwa dunia ini adalah ilusi, apakah ini benar? Yang kita sentuh yang kita raba? Teman yang baru bisa kita tanya kalau kita datang ke rumahnya? Apa ini ilusi?
Raffaaaaael, raffaaaaael, fiiii dunya la tadzikro. Rafaael. Fi dunya latadzikro bil hikmah, wa bil qiyad

Maa lahi bi robbi. Taaqi ilaa robbi. La taaqwa, in anfusakum minallaaahi.