Saya mencoba mengonversi koordinat dari satu sistem koordinat ke yang lain, sehingga saya dapat menggambarnya pada gambar.
Pada dasarnya sistem koordinat tujuan adalah sebagai berikut:
X range: 0 to 1066
Y range: 0 to 1600
(hanya gambar standar yang saya gambar dengan ukuran 1066 x 1600)
Posisi yang saya coba gambar pada gambar sebenarnya memiliki ukuran yang sama persis, tetapi sistem koordinatnya berbeda. Rentang semua koordinat adalah 1066x1600.
Tapi contoh koordinatnya adalah:
(111.33f, 1408.41f)
(-212.87f, 1225.16f)
Kisaran sistem koordinat ini adalah:
X range: -533.333 to 533.333
Y range: 533.333 to 2133.333
Saya merasa ini adalah matematika yang SANGAT sederhana, tetapi untuk beberapa alasan saya tidak mengerti.
Bagaimana saya bisa mengubah koordinat yang disediakan ke sistem koordinat pertama?
2d
coordinates
Geesu
sumber
sumber
Jawaban:
Anda dapat menormalkan nilai pertama, ini akan memberi Anda nilai dalam kisaran [0,1]. Anda dapat menganggapnya sebagai persentase X, persentase yang dipetakan nilainya antara nilai minimum dan maksimum. Kemudian Anda dapat menemukan di mana persentase itu berada dalam sistem koordinat tujuan Anda dengan melihat berapa nilai persentase X melalui sistem tujuan. Saya akan menggunakan kode Java sebagai bahasa contoh, saya yakin konsepnya cukup jelas untuk menerjemahkan ke bahasa apa pun.
Jadi normalkan:
Dengan menggunakan contoh Anda, Anda akan memasukkan:
Kemudian temukan di mana ia berada di sistem tujuan. Dengan sesuatu seperti
Atau untuk menggunakan nilai-nilai Anda:
Jadi misalnya dengan nilai x 1000 Anda akan memetakannya ke sistem koordinat tujuan Anda
467.29
.Atau , jika sistem koordinat akan selalu sama, Anda dapat melakukan pra-perhitungan rasio di antara mereka.
Begitu:
sumber
Ini adalah matematika sederhana:
src - sumber sistem koordinat
sistem koordinasi hasil - hasil
Edit - penjelasan matematika
( src - src_min ) / ( src_max - src_min )
menerjemahkannya ke sistem koordinat mulai dari nol dengan panjang sistem koordinat sumber yang sama(0.0, src_max - src_min )
. Kemudian ia mengukur nilai untuk mengoordinasikan sistem(0.0, 1.0)
.* ( res_max - res_min )
skala ini bernilai untuk mengoordinasikan sistem mulai dari nol dengan panjangnya sistem koordinasi hasil(0.0, dst_max - dst_min)
+ res_min
menerjemahkan nilai untuk menghasilkan sistem koordinat(dst_min, dst_max)
sumber
Persamaan dasar untuk tranformasi koordinat 2D (dalam aljabar, tanpa rotasi) adalah:
diberikan dua poin di TargetCoordinate (T1, T2) yang sesuai dengan dua poin di SourceCoordinate (S1, S2),
TranslateFactor
danScalingFactor
diberikan dengan menyelesaikan:yang hasilnya:
Dalam kasus Anda, untuk koordinat x
Dan dengan demikian,
yoordinasikan ikuti prosedur yang sama
sumber
Membuat beberapa asumsi:
Lalu pertanyaannya bermigrasi ke: Apa matriks transformasi homogen untuk perubahan basis saya?
Untuk menjawab ini, kita perlu jawaban atas tiga pertanyaan tambahan anak pertama:
Tetapkan jawaban untuk tiga pertanyaan ini sebagai berikut:
Maka matriks transformasi homogen adalah:
Konvensi saya di sini adalah bahwa poin diwakili oleh vektor baris, yang merupakan konvensi grafik komputer biasa; ahli matematika dan fisikawan sering menggunakan oppsoite.
sumber