Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Penjelasan terperinci tentang formula untuk mencari panjang lengkung dalam JavaScript

Penjelasan terperinci tentang formula untuk mencari panjang lengkung dalam JavaScript

PHPz
PHPzasal
2023-04-24 15:49:50806semak imbas

JavaScript ialah bahasa skrip dipacu objek dan peristiwa yang biasanya berjalan pada penyemak imbas web dan merupakan bahasa skrip yang digunakan untuk mengawal proses interaksi dinamik halaman web. Dalam pembangunan bahagian hadapan, kita selalunya perlu mengira panjang lengkung berdasarkan koordinatnya. Artikel ini akan membincangkan dan meneroka formula untuk mencari panjang lengkung dalam JavaScript.

1. Gambaran Keseluruhan Panjang Lengkung

Dalam geometri, panjang lengkung ialah salah satu sifat bawaan lengkung, yang merujuk kepada panjang lengkok lengkung. Konsep panjang lengkok berasal daripada pengiraan pi Bentuk pengiraan pi ialah: $π = 2l/d$, di mana $l$ mewakili panjang lengkok lilitan dan $d$ mewakili diameter bulatan. Dengan cara yang sama, untuk sebarang lengkung, kita boleh mencari panjangnya dengan mengira panjang lengkok. Pengiraan panjang lengkok memerlukan penggunaan formula kamiran dalam kalkulus, tetapi dalam JavaScript kami lebih bergantung pada kaedah pengiraan berangka untuk mengira panjang lengkung.

2. Pengiraan panjang lengkung

Untuk mencari panjang lengkung dalam JavaScript, formula berikut biasanya digunakan: $L=sum_{i=0}^{n-1} sqrt{(x_{i+ 1}-x_i)^2+(y_{i+1}-y_i)^2}$. Antaranya, $L$ mewakili panjang lengkung, $n$ mewakili bilangan titik lengkung, $x_i$ dan $y_i$ mewakili absis dan ordinat bagi titik $i$th pada lengkung secara bergilir-gilir. Formula ini membahagikan lengkung kepada beberapa segmen garisan kecil Panjang setiap segmen garisan kecil boleh dikira mengikut rumus jarak Euclidean Kemudian panjang semua segmen garisan kecil ditambah untuk mendapatkan panjang lengkung.

Kod sampel adalah seperti berikut:

function getCurveLength(points) {
  var length = 0;
  for (var i = 1; i < points.length; i++) {
    var dx = points[i].x - points[i - 1].x;
    var dy = points[i].y - points[i - 1].y;
    length += Math.sqrt(dx * dx + dy * dy);
  }
  return length;
}

Antaranya, $points$ mewakili set titik pada lengkung, dan setiap titik diwakili sebagai objek dengan absis dan ordinat, seperti yang ditunjukkan di bawah:

var points = [
  { x: 0, y: 0 },
  { x: 0, y: 10 },
  { x: 10, y: 10 },
  { x: 10, y: 0 },
  { x: 0, y: 0 }
];

Letakkan kod di atas dalam fungsi yang mengira panjang lengkung untuk mendapatkan panjang lengkung.

3. Contoh pengiraan panjang lengkung

Berikut adalah contoh di mana kita menggunakan formula di atas untuk mengira panjang lengkung yang berbeza:

1 >

Keluk Bezier Kuadratik ialah bentuk lengkung yang dibentuk oleh dua titik yang bergerak pada lengkung mengikut titik kawalan tertentu. Formulanya ialah: $B(t)=(1-t)^2P_0+2t(1-t)P_1+t^2P_2$. Antaranya, $P_0$, $P_1$ dan $P_2$ ialah koordinat bagi tiga titik kawalan, $t$ ialah faktor interpolasi, dan julat nilai ialah $[0,1]$.

Kami mengandaikan bahawa koordinat titik kawalan ialah $(0,0)$, $(5,10)$ dan $(10,0)$ masing-masing, maka lengkung Bezier kuadratik boleh diperolehi dengan yang berikut kod Panjang:

var points = [];
for (var t = 0; t <= 1; t += 0.01) {
  var x = Math.pow(1 - t, 2) * 0 + 2 * t * (1 - t) * 5 + Math.pow(t, 2) * 10;
  var y = Math.pow(1 - t, 2) * 0 + 2 * t * (1 - t) * 10 + Math.pow(t, 2) * 0;
  points.push({ x: x, y: y });
}
var length = getCurveLength(points);  // 得到曲线长度
Panjang lengkung akhir ialah $29.02$.

2. Keluk Bezier Kubik

Keluk Bezier Kubik ialah bentuk lengkung yang ditakrifkan oleh tiga titik kawalannya ialah: $B(t)=( 1-t)^3P_0+3(. 1-t)^2tP_1+3(1-t)t^2P_2+t^3P_3$. Antaranya, $P_0$, $P_1$, $P_2$ dan $P_3$ ialah koordinat bagi empat titik kawalan, $t$ ialah faktor interpolasi, dan julat nilai ialah $[0,1]$.

Kami menganggap bahawa koordinat titik kawalan ialah $(0,0)$, $(5,10)$, $(5,5)$ dan $(10,0)$ masing-masing, maka yang berikut kod boleh digunakan Cari panjang lengkung Bezier padu:

var points = [];
for (var t = 0; t <= 1; t += 0.01) {
  var x = Math.pow(1 - t, 3) * 0 + 3 * Math.pow(1 - t, 2) * t * 5 + 3 * (1 - t) * Math.pow(t, 2) * 5 + Math.pow(t, 3) * 10;
  var y = Math.pow(1 - t, 3) * 0 + 3 * Math.pow(1 - t, 2) * t * 10 + 3 * (1 - t) * Math.pow(t, 2) * 5 + Math.pow(t, 3) * 0;
  points.push({ x: x, y: y });
}
var length = getCurveLength(points);  // 得到曲线长度
Panjang akhir lengkung ialah $28.36$.

4. Ringkasan

Melalui pengiraan contoh di atas, kita dapat melihat bahawa mencari panjang lengkung dalam JavaScript biasanya dikira berdasarkan formula jarak Euclidean ketepatan , dan boleh digunakan pada pelbagai jenis bentuk lengkung. Pada masa yang sama, kami juga boleh melakukan pengiraan panjang berasingan untuk pelbagai jenis lengkung untuk memenuhi keperluan khusus.

Ringkasnya, formula panjang lengkung JavaScript hanyalah helah kecil dalam banyak pembangunan bahagian hadapan, tetapi ia mempunyai kesan yang besar pada prestasi dan kesan interaktif aplikasi web. Oleh itu, kita perlu terus belajar dan meneroka untuk meningkatkan tahap teknikal dan kreativiti kita.

Atas ialah kandungan terperinci Penjelasan terperinci tentang formula untuk mencari panjang lengkung dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn