from fractions import Fraction
def barycentric(vertices, point):
vertices, point = tuple(tuple(v) for v in vertices), tuple(point)
if len(vertices) != 3 or any(len(v) != 2 for v in vertices) or len(point) != 2:
raise ValueError("triangle.shape")
if any(type(c) is not int or abs(c) > 10000 for v in vertices + (point,) for c in v):
raise ValueError("coordinate.range")
(x0, y0), (x1, y1), (x2, y2) = vertices
x, y = point
den = (y1-y2)*(x0-x2) + (x2-x1)*(y0-y2)
if den == 0:
raise ValueError("triangle.degenerate")
a = Fraction((y1-y2)*(x-x2) + (x2-x1)*(y-y2), den)
b = Fraction((y2-y0)*(x-x2) + (x0-x2)*(y-y2), den)
return a, b, 1-a-b
✳Hitung bobot barisentris tepat dari tiga titik sudut dan satu titik bulat dengan besar koordinat maksimal 10000.
✓ PerubahanTinjau sebelum menerapkan ↗
Ilustrasi ruang kerja
Proyek
Uji titik sudut dan titik luar, tolak sudut segaris, lalu pastikan bobot merekonstruksi titik.
Tinjau sebelum menerapkan
Bandingkan perilaku sebenarnya dengan hasil yang diharapkan. Jika pemeriksaan gagal, cari penyebabnya sebelum membuat perubahan lain.
Model
Atur endpoint kompatibel OpenAI atau Anthropic dengan URL dasar dan kunci API jika diperlukan. Uji koneksi. Server model lokal harus berjalan; alat jarak jauh dapat mengirim data secara terpisah.
from fractions import Fraction
def barycentric(vertices, point):
vertices, point = tuple(tuple(v) for v in vertices), tuple(point)
if len(vertices) != 3 or any(len(v) != 2 for v in vertices) or len(point) != 2:
raise ValueError("triangle.shape")
if any(type(c) is not int or abs(c) > 10000 for v in vertices + (point,) for c in v):
raise ValueError("coordinate.range")
(x0, y0), (x1, y1), (x2, y2) = vertices
x, y = point
den = (y1-y2)*(x0-x2) + (x2-x1)*(y0-y2)
if den == 0:
raise ValueError("triangle.degenerate")
a = Fraction((y1-y2)*(x-x2) + (x2-x1)*(y-y2), den)
b = Fraction((y2-y0)*(x-x2) + (x0-x2)*(y-y2), den)
return a, b, 1-a-b
Ruang kerja kode dengan AI
Ubah persyaratan geometri menjadi perubahan kode yang dapat diperiksa
BarySlate adalah ruang kerja pemrograman untuk Windows guna membahas kode terkait geometri dengan model AI yang Anda hubungkan. Mulailah dengan sistem koordinat dan hasil yang dibutuhkan aplikasi. Deskripsi tepat tentang konvensi tersebut membantu menjaga percakapan tetap berguna ketika hasil yang tampak masuk akal secara visual masih mungkin memiliki tanda, urutan, atau representasi numerik yang salah.
Contoh koordinat barisentris segitiga menawarkan tugas proyek khusus: meninjau bobot bertanda dan menolak segitiga degenerat. Minta model memeriksa fungsi bersama kode yang menggunakan bobot tersebut. Jelaskan apakah pemanggil membutuhkan pecahan eksak atau representasi lain sebelum meminta perubahan yang mungkin mengubah antarmuka itu.
Tinjau usulan menggunakan titik sudut, titik interior, dan titik eksterior dengan hasil harapan yang ditetapkan secara independen. Sertakan kasus degenerat dan periksa jalurnya melalui penanganan kesalahan. Jalankan data uji ini dengan alat proyek dan periksa pula perilaku kode pengguna; perubahan perlakuan terhadap titik luar dapat memengaruhi lebih dari perhitungannya sendiri.
Model AI tanpa batasan hanya menjadi opsi yang dapat dipilih jika tersedia melalui endpoint kompatibel OpenAI atau endpoint Anthropic yang didukung. Berikan kredensial jika diperlukan dan periksa dukungan konteks serta alat. Batasan model yang dipilih tetap berlaku, sementara BarySlate memberi usulan perubahannya konteks proyek konkret untuk Anda nilai.
Sebelum menerima usulan kode geometri
Apa yang perlu saya jelaskan tentang titik di luar segitiga?
Nyatakan apakah bobot bertanda diharapkan dan cara pemanggil menggunakannya. Jangan menganggap titik eksterior tidak valid hanya karena bobotnya negatif. Sertakan data uji titik luar dengan hasil dan perilaku kode pengguna yang diinginkan.
Mengapa menyebutkan pecahan eksak dalam permintaan?
Perubahan tipe keluaran dapat mengubah perbandingan, serialisasi, dan perhitungan lanjutan. Jika proyek bergantung pada nilai eksak, nyatakan persyaratan itu secara eksplisit. Tinjau setiap usulan konversi ke nilai floating-point bersama kode pemanggil yang akan menerimanya.
Kasus mana yang membantu mengisolasi kesalahan urutan koordinat?
Mulailah dengan setiap titik sudut dan bobot yang diharapkan, lalu titik interior dengan hasil yang diketahui. Nyatakan urutan titik sudut secara eksplisit dalam data uji. Kasus ini dapat mengungkap asumsi urutan yang mungkin tersembunyi dalam satu segitiga yang dirender.
Bisakah BarySlate memastikan geometri yang saya render sudah benar?
Gunakan lingkungan rendering dan pemeriksaan proyek untuk memastikan hasil tersebut. Ruang kerja mendukung pembahasan kode dan usulan perubahan. Bandingkan data uji numerik dengan perilaku visual, alih-alih menganggap penjelasan model atau satu gambar sebagai verifikasi lengkap.