Bersakit-sakit Dahulu

advertisement
E
Bersakit-sakit Dahulu
Time Limit : 3 detik
The ancient pond
A frog leaps in
Water’s sound! Plop!
-- Basho
Seorang hacker yang disewa secara gelap oleh sebuah perusahaan game berhasil mencuri data
rahasia dari perusahaan game saingannya. Data ini berhubungan dengan game baru yang sedang
dikembangkan oleh perusahaan tersebut. Banyak informasi yang bisa dipelajari dari data rahasia ini,
akan tetapi untuk mengerti secara benar apa makna dari data itu, dibutuhkan beberapa program
untuk melakukan proses reverse-engineering.
Salah satu informasi penting yang terkandung dalam data itu adalah transformasi geometri untuk
menganimasikan karakter dalam game. Transformasi geometri dalam grafika computer bisa berupa
rotasi, translasi, penskalaan, dsb. Dalam notasi matriks, transformasi geometri dapat dirangkum
menjadi sebuah perkalian matriks transformasi dengan sebuah vektor (yang menyatakan koordinat
kartesius yang akan ditransformasi), seperti berikut :
 X '  a b
 Y '   d e
  
 1   0 0
c  X 
f   Y 
1   1 
Koordinat titik 2-dimensi yang akan ditransformasi dinyatakan dengan variabel (X, Y), dan titik hasil
transformasinya dinyatakan dengan variabel (X’, Y’). Matriks transformasi berukuran 3x3 dan berisi
elemen-elemen yang dilambangkan dengan variabel a, b, c, d, e, dan f. Karena transformasi geometri
yang digunakan adalah transformasi koordinat homogen, maka baris terakhir dari matriks selalu
berisi elemen [0 0 1].
Permasalahan utama di sini, sang hacker berhasil mendapatkan contoh titik-titik sudut poligon
sebelum dan setelah transformasi geometri, tetapi dia tidak berhasil mendapatkan matriks
transformasinya. Tugas anda sebagai programmer handal adalah membuat program untuk mencari
matriks transformasi yang digunakan untuk mentransformasi titik-titik sudut poligon tersebut.
Untuk mempermudah pekerjaan anda, berikut ini adalah contoh secara visual dari titik-titik poligon
sebelum dan sesudah transformasi, beserta matriks transformasinya.
Koordinat titik-titik sudut poligon sebelum transformasi : (1, 1), (7, 1), (9, 3), (4, 5), (-1, 3)
Koordinat titik-titik sudut poligon setelah transformasi: (6, 2), (24, 8), (34, 4), (23, -7), (4, -6)
8
5
6
4
4
2
3
0
2
-2
-4
1
0
2
4
6
8
10
-6
0
Poligon Sebelum Transformasi
10
20
30
Poligon Setelah Transformasi
Matriks transformasi yang digunakan adalah :
3 2 1 
1  3 4 


0 0 1
Spesifikasi Input
Baris pertama dari masukan adalah jumlah titik sudut poligon (n, 5
≤ n ≤ 1000).
n baris berikutnya adalah koordinat masing-masing titik sudut poligon (X Y) yang belum
ditransformasi, diikuti dengan n baris koordinat titik-titik sudut poligon (X’ Y’) setelah transformasi.
Koordinat titik selalu merupakan bilangan bulat (integer, dengan batasan antara -1.000.000 sampai
+1.000.000).
Spesifikasi Output
Carilah matriks transformasi yang memetakan titik-titik poligon semula menjadi titik-titik poligon
hasil transformasi, kemudian keluarkan elemen-elemen matriksnya . Perhatikan format pada
teladan keluaran dibawah ini. Matriks harus selalu merupakan bilangan bulat (integer).
Contoh Input
5
11
71
93
45
-1 3
62
24 8
34 4
23 -7
4 -6
Contoh Output
321
1 -3 4
001
Download