Akan lebih mudah untuk memiliki fungsi-fungsi ini sebagai bagian dari rutinitas matematika numpy.
cart2pol -- Transformasikan Cartesian ke koordinat kutub
def cart2pol(x, y):
theta = np.arctan2(y, x)
rho = np.hypot(x, y)
return theta, rho
pol2cart -- Transformasikan kutub ke koordinat Cartesian
def pol2cart(theta, rho):
x = rho * np.cos(theta)
y = rho * np.sin(theta)
return x, y
cart2sph -- Ubah Cartesian menjadi koordinat bola
def cart2sph(x, y, z):
hxy = np.hypot(x, y)
r = np.hypot(hxy, z)
el = np.arctan2(z, hxy)
az = np.arctan2(y, x)
return az, el, r
sph2cart -- Transformasikan bola ke koordinat Cartesian
def sph2cart(az, el, r):
rcos_theta = r * np.cos(el)
x = rcos_theta * np.cos(az)
y = rcos_theta * np.sin(az)
z = r * np.sin(el)
return x, y, z
Saya tidak yakin ini adalah sesuatu yang perlu di numpy, fungsinya cukup sederhana untuk mengimplementasikan diri Anda secara optimal.
Jika kita menambahkannya, apakah kita menarik garis transformasi mana yang akan ditambahkan? ada jumlah yang tak terbatas dari mereka.
Bahkan jika kita menggambar garis hanya pada transformasi bola, ada sejumlah konvensi berbeda yang tidak direpresentasikan di sini. Saya percaya bahwa fungsi-fungsi ini lebih sesuai untuk paket yang benar-benar menggunakannya secara internal (misalnya astropi) dan mengikuti konvensi tertentu melalui kodenya.
Saya mengerti apa yang Anda bicarakan. Namun, fungsi-fungsi ini sangat sering digunakan saat bekerja dengan sistem koordinat dalam algoritme geometris, perangkat lunak grafik komputer, dll. Generalisasi pada dimensi-n jarang diperlukan. Di MATLAB fungsi-fungsi ini ada dan, saya harus mengatakan, mereka agak nyaman. Saya menganggap fungsi-fungsi ini sebagai rutinitas matematika sederhana, misalnya, fungsi rad2deg dan deg2rad. Fungsi-fungsi ini, seperti yang Anda ketahui, adalah fungsi yang sering digunakan dan ada di numpy.
Sebagai aturan umum pasti ada tempat di numpy untuk utilitas dasar
hal-hal. Jelas ada pertanyaan tentang di mana tepatnya untuk menarik garis,
tapi kami melakukan dan harus menyertakan setidaknya beberapa hal seperti ini. (Sebagai ekstrim
contoh, mengapa kita mengekspor np.pi? Ini sepele bagi pengguna untuk mengimplementasikan kembali jika
mereka membutuhkannya ... tetapi memaksa mereka untuk melakukannya akan menjadi pemborosan yang mengganggu
waktu mereka.)
Jadi jika kita akan menggambar garis, kita harus benar-benar melakukannya berdasarkan beberapa
prinsip IMO.
Beberapa kriteria potensial yang perlu dipertimbangkan untuk jenis pembantu sederhana ini:
Saya pikir fungsi-fungsi ini mendapat skor cukup baik pada kriteria ini. Semua orang menggunakan
koordinat kutub terkadang, tidak ada yang akan mengeluh bahwa kami menerapkan
mereka salah, memeriksa ulang formula setiap kali Anda membutuhkannya adalah
buang-buang waktu yang mengganggu, dll.
Satu hal yang saya tidak yakin adalah apakah semua orang menggunakan konvensi yang sama
untuk pemetaan antara koordinat bola dan Cartesian - ada yang tahu?
Saya bisa membayangkan komunitas yang berbeda memiliki konvensi tanda yang berbeda atau
apa pun, dan saya sendiri hampir tidak menggunakannya.
Pada 24 Okt 2014 21:04, "Evgeny Prilepin" [email protected] menulis:
Saya mengerti apa yang Anda bicarakan. Namun, fungsi-fungsi ini digunakan
sangat sering saat bekerja dengan sistem koordinat dalam geometrik
algoritme, perangkat lunak grafik komputer, dll. Generalisasi pada dimensi-n
diperlukan jarang. Di MATLAB fungsi-fungsi ini ada
http://www.mathworks.com/help/matlab/cartesian-coordinate-system-conversion.html
dan, saya harus mengatakan, mereka agak nyaman. Saya mempertimbangkan fungsi-fungsi ini
sebagai rutinitas matematika sederhana, misalnya, fungsi rad2deg dan
deg2rad. Fungsi-fungsi ini, seperti yang Anda ketahui, adalah fungsi yang sering digunakan dan
ada
http://docs.scipy.org/doc/numpy/reference/generated/numpy.rad2deg.html#numpy.rad2deg
di numpy.—
Balas email ini secara langsung atau lihat di GitHub
https://github.com/numpy/numpy/issues/5228#issuecomment -60441622.
Sayangnya, memang ada beberapa konvensi yang digunakan untuk menangani koordinat bola: http://en.wikipedia.org/wiki/Spherical_coordinate_system
Saya pikir lebih baik membiarkan pengguna menentukan transformasi koordinat bola tertentu yang mereka inginkan sendiri.
Ada juga standar ISO yang menentukan apa format "yang tepat" itu... Saya tidak berpikir bahwa banyak konvensi benar-benar menjadi masalah, selama apa yang dikembalikan didokumentasikan dengan jelas: beralih dari satu konvensi ke konvensi lainnya jauh lebih mudah daripada mengubah koordinat kartesius ke salah satu sistem koordinat bola yang mungkin.
Di sisi lain, saya tidak melihat ini pas di numpy sebagai beberapa fungsi mandiri. Koordinat kutub, terutama yang terkait dengan bilangan kompleks, mungkin, tetapi koordinat bola, tidak juga.
Yah, saya agak cenderung setuju dengan Anda. Mari kita tidak membahas fungsi koordinat bola sekarang. Namun, fungsi koordinat kutub dapat diterapkan dalam banyak kasus.
Ada 5 norma berbeda yang diterapkan di np.linalg.norm
? Saya tidak mengerti mengapa tidak mungkin untuk menambahkan beberapa transformasi koordinat. Bahkan jika dilakukan tanpa opsi, saya rasa tidak ada diskusi serius tentang validitas kegunaan dari x,y -> r*cos(theta),sin(theta) sederhana dan kebalikannya. Saya akan terkejut jika ini bukan transformasi koordinat yang paling banyak digunakan dan lurus ke depan di dunia.
Di sisi lain, saya tidak melihat ini pas di numpy sebagai beberapa fungsi mandiri. Koordinat kutub, terutama yang terkait dengan bilangan kompleks, mungkin, tetapi koordinat bola, tidak juga.
Setuju dengan ini. Kebanyakan orang tampaknya netral ke positif untuk menambahkan transformasi koordinat kutub. Jadi kalau ada yang ingin membuat proposal yang konkrit dan kemudian mengimplementasikannya, saya rasa dipersilakan.
Beberapa pemikiran lain:
[0, 2pi)
atau [-pi, pi)
). Saya mungkin lebih suka [-pi, pi)
.numpy.lib
alih-alih numpy
tingkat atas.Menemukan ini saat kami mendiskusikan percepatan transformasi koordinat dalam astropi (https://github.com/astropy/astropy/pull/5735) dan saya bertanya-tanya apa yang terjadi dengan sincos
(#2626) dan "eksponen hanya bilangan imajiner" (#5625).
Satu saran mungkin untuk memulai dengan mengikuti cmath
[1] dan memperkenalkan np.rect
dan np.polar
, dan bekerja dari itu (saat ini, kami membahas semua kecuali dua ini dan np.phase
dari cmath
).
[1] https://docs.python.org/3.5/library/cmath.html#conversions -to-and-from-polar-coordinates
Versi 3D dari helper ini juga akan membantu.
Halo, saya baru di sini dan karena saya belajar mendalam, saya punya pertanyaan ini.
Saya menggunakan tensorflow untuk mendeteksi objek dengan USB HD Camera yang tidak bergerak.
Saya mendapatkan koordinat pusat objek dan saya ingin robot menuju ke koordinat tersebut, konversi mana yang harus saya gunakan untuk tujuan ini?
Pada robot saya menggunakan koordinat XYZ yaitu Cartesian per manual. Tidak yakin koordinat apa yang saya dapatkan dari tensorflow, cartesian, pixel atau apa?
Terima kasih
@fdkssdks Tempat yang salah untuk mengajukan pertanyaan itu, coba stackoverflow.
Atau di sini: Dokumentasi API Tensorflow .
Komentar yang paling membantu
Saya mengerti apa yang Anda bicarakan. Namun, fungsi-fungsi ini sangat sering digunakan saat bekerja dengan sistem koordinat dalam algoritme geometris, perangkat lunak grafik komputer, dll. Generalisasi pada dimensi-n jarang diperlukan. Di MATLAB fungsi-fungsi ini ada dan, saya harus mengatakan, mereka agak nyaman. Saya menganggap fungsi-fungsi ini sebagai rutinitas matematika sederhana, misalnya, fungsi rad2deg dan deg2rad. Fungsi-fungsi ini, seperti yang Anda ketahui, adalah fungsi yang sering digunakan dan ada di numpy.