Jadual Kandungan
Gunakan laluan
预定义形状
几何和数学
最终想法
Rumah hujung hadapan web tutorial js Bermula dengan Paper.js: Laluan dan Geometri

Bermula dengan Paper.js: Laluan dan Geometri

Aug 30, 2023 pm 08:25 PM
laluan Geometri paperjs

Bermula dengan Paper.js: Laluan dan Geometri

Dalam tutorial sebelum ini, saya memperkenalkan proses pemasangan dan hierarki projek dalam Paper.js. Kali ini saya akan mengajar anda tentang laluan, segmen garisan dan operasinya. Ini akan membolehkan anda mencipta bentuk kompleks menggunakan perpustakaan. Selepas itu, saya ingin memperkenalkan beberapa prinsip geometri asas yang berasaskan Paper.js.

Gunakan laluan

Satu laluan dalam Paper.js diwakili oleh satu siri segmen garisan yang disambungkan oleh garisan melengkung. Segmen pada asasnya ialah titik dan dua pemegangnya, yang mentakrifkan kedudukan dan arah lengkung. Tidak mentakrifkan segmen garisan menghasilkan garis lurus dan bukannya lengkung. point 及其两个句柄,它们定义曲线的位置和方向。不定义线段会导致直线而不是曲线。

使用 new Path() 构造函数定义新路径后,您可以借助 path.add(segment) 向其添加段功能。由于此函数支持多个参数,因此您还可以一次添加多个段。假设您想要在现有路径内的特定索引处插入新段。您可以使用 path.insert(index, segment) 函数来执行此操作。同样,要删除特定索引处的段,可以使用 path.removeSegment(index) 函数。这两个函数都使用从零开始的索引。这意味着使用 path.removeSegment(3) 将删除第四段。您可以使用 path.lated 属性关闭所有绘制的路径。它将把路径的第一段和最后一段连接在一起。

到目前为止,我们所有的路径都是直线。要创建弯曲路径而不指定每个段的句柄,可以使用 path.smooth() 函数。此函数计算路径中所有段的手柄的最佳值,以使经过它们的曲线平滑。段本身不会更改其位置,如果您为任何段指定了句柄值,这些值将被忽略。下面的代码使用我们讨论的所有函数和属性来创建四个路径,其中两个是弯曲的。

var aPath = new Path();
aPath.add(new Point(30, 60));
aPath.add(new Point(100, 200));
aPath.add(new Point(300, 280), new Point(280, 40));
aPath.insert(3, new Point(180, 110));
aPath.fullySelected = 'true';
aPath.closed = true;
  
var bPath = aPath.clone();
bPath.smooth();
bPath.position.x += 400;
  
var cPath = aPath.clone();
cPath.position.y += 350;
cPath.removeSegment(3);
  
var dPath = bPath.clone();
dPath.strokeColor = 'green';
dPath.position.y += 350;
dPath.removeSegment(3);
Salin selepas log masuk

首先,我们创建一个新路径,然后向其中添加段。使用 path.insert(3, new Point(180, 110)) 插入一个新段来代替第四个段,并将第四个段移动到第五个位置。我已将 fullySelected 设置为 true 以显示每条曲线的所有点和手柄。对于第二条路径,我使用了 path.smooth() 函数来使曲线平滑。使用 cPath.removeSegment(3) 删除第四段为我们提供了原始形状,没有任何基于索引的插入。您可以通过在此 CodePen 演示中注释掉 aPath.insert(3, new Point(180, 110)); 来验证这一点。这是到目前为止我们所有操作的最终结果:

<图>

预定义形状

Paper.js 支持一些开箱即用的基本形状。例如,要创建一个圆,您可以简单地使用 new Path.Circle(center, radius) 构造函数。同样,您可以使用 new Path.Rectangle(rect) 构造函数来创建矩形。您可以指定左上角和右下角,也可以指定左上角和矩形的大小。要绘制圆角矩形,可以使用 new Path.RoundedRectangle(rect, size) 构造函数,其中 size 参数决定圆角的大小。

如果要创建 n 边正多边形,可以使用 new Path.RegularPolygon(center, numSides, radius) 构造函数来实现。参数 center 确定多边形的中心,radius 确定多边形的半径。

下面的代码将生成我们刚刚讨论的所有形状。

var aCircle = new Path.Circle(new Point(75, 75), 60);
aCircle.strokeColor = 'black';
  
var aRectangle = new Path.Rectangle(new Point(200, 15), new Point(400, 135));
aRectangle.strokeColor = 'orange';
  
var bRectangle = new Path.Rectangle(new Point(80, 215), new Size(400, 135));
bRectangle.strokeColor = 'blue';
  
var myRectangle = new Rectangle(new Point(450, 30), new Point(720, 170));
var cornerSize = new Size(10, 60);
var cRectangle = new Path.RoundRectangle(myRectangle, cornerSize);
cRectangle.fillColor = 'lightgreen';
  
var aTriangle = new Path.RegularPolygon(new Point(120, 500), 3, 110);
aTriangle.fillColor = '#FFDDBB';
aTriangle.selected = true;

var aDodecagon = new Path.RegularPolygon(new Point(460, 490), 12, 100);
aDodecagon.fillColor = '#CCAAFC';
aDodecagon.selected = true;
Salin selepas log masuk

我们创建的第一个矩形是基于坐标点的。下一个使用第一个点来确定矩形的左上角,然后使用大小值来绘制其余的点。在第三个矩形中,我们还指定了矩形的半径。第一个半径参数决定水平曲率,第二个参数决定垂直曲率。

最后两个形状只需使用 RegularPolygon

Selepas menggunakan pembina new Path() untuk menentukan laluan baharu, anda boleh menggunakan path.add(segmen)</code > kepada Ia menambah fungsi segmen. Memandangkan fungsi ini menyokong berbilang parameter, anda juga boleh menambah berbilang segmen sekaligus. Katakan anda ingin memasukkan segmen baharu pada indeks tertentu dalam laluan sedia ada. Anda boleh melakukan ini menggunakan fungsi <code class="inline">path.insert(index, segment). Begitu juga, untuk mengalih keluar segmen pada indeks tertentu, anda boleh menggunakan fungsi path.removeSegment(index). Kedua-dua fungsi menggunakan pengindeksan berasaskan sifar. Ini bermakna bahawa menggunakan path.removeSegment(3) akan mengalih keluar segmen keempat. Anda boleh mematikan semua laluan yang dilukis menggunakan atribut path.lated. Ia akan menghubungkan segmen pertama dan terakhir laluan bersama-sama. <图>
var aPolygon = new Path.RegularPolygon(new Point(140, 140), 800, 120);
aPolygon.fillColor = '#CCAAFC';
aPolygon.selected = true;
  
var bPolygon = aPolygon.clone();
bPolygon.fillColor = '#CCFCAA';
bPolygon.simplify();
  
var cPolygon = aPolygon.clone();
cPolygon.fillColor = '#FCAACC';
cPolygon.simplify(4);
  
var dPolygon = bPolygon.clone();
dPolygon.fillColor = '#FCCCAA';
dPolygon.flatten(80);
Salin selepas log masuk
Salin selepas log masuk
Pertama, kami mencipta laluan baharu dan kemudian menambah segmen pada laluan itu. Gunakan path.insert(3, new Point(180, 110)) untuk memasukkan segmen baharu menggantikan segmen keempat dan gerakkan segmen keempat ke kedudukan kelima . Saya telah menetapkan fullySelected kepada true untuk menunjukkan semua titik dan pemegang setiap lengkung. Untuk laluan kedua, saya menggunakan fungsi path.smooth() untuk melicinkan lengkung. Mengalih keluar segmen keempat menggunakan cPath.removeSegment(3) memberikan kita bentuk asal tanpa sebarang sisipan berasaskan indeks. Anda boleh mengesahkan ini dengan mengulas aPath.insert(3, new Point(180, 110)); dalam tunjuk cara CodePen ini. Inilah hasil akhir semua yang telah kami lakukan setakat ini:

几何和数学

Paper.js 有一些基本数据类型,如 PointSizeRectangle 来描述图形项的几何属性。它们是几何值(如位置或尺寸)的抽象表示。点只是描述二维位置,大小描述二维空间中的抽象维度。这里的矩形表示由左上角点及其宽度和高度围成的区域。它与我们之前讨论的矩形路径不同。与路径不同,它不是一个项目。您可以在这个 Paper.js 教程中了解有关它们的更多信息。

您可以对点数和大小执行基本的数学运算 - 加法、减法、乘法和除法。以下所有操作均有效:

var pointA = new Point(20, 10);

var pointB = pointA * 3; // { x: 60, y: 30 }
var pointC = pointB - pointA; // { x: 40, y: 20 }
var pointD = pointC + 30; // { x: 70, y: 50 }
var pointE = pointD / 5;  // { x: 14, y: 10 }
var pointF = pointE * new Point(3, 2); // { x: 42, y: 20 }

// You can check the output in console for verification
console.log(pointF); 
Salin selepas log masuk
Salin selepas log masuk

除了这些基本操作之外,您还可以执行一些舍入操作或生成点和大小的随机值。考虑以下示例:

var point = new Point(3.2, 4.7);

var rounded = point.round(); // { x: 3, y: 5 }
var ceiled  = point.ceil();  // { x: 4, y: 5 }
var floored = point.floor(); // { x: 3, y: 4 }

// Generate a random point with x between 0 and 50
// and y between 0 and 40
var pointR = new Point(50, 40) * Point.random();

// Generate a random size with width between 0 and 50
// and height between 0 and 40
var sizeR = new Size(50, 40) * Size.random();
Salin selepas log masuk

random() 函数生成 0 到 1 之间的随机值。您可以将它们与适当的 PointSize 对象相乘值以获得所需的结果。

这总结了您需要熟悉的基本数学知识,以使用 Paper.js 创建有用的内容。

最终想法

完成本教程后,您应该能够创建各种路径和形状、展平曲线或简化复杂路径。现在您对可以使用 Paper.js 执行的各种数学运算也有了基本的了解。通过结合您在本系列教程和上一个教程中学到的所有内容,您应该能够在不同图层上创建复杂的多边形并将它们混合在一起。您还应该能够在路径中插入和删除线段以获得所需的形状。

如果您正在寻找其他 JavaScript 资源来学习或在工作中使用,请查看我们在 Envato 市场中提供的资源。

如果您对本教程有任何疑问,请在评论中告诉我。

Atas ialah kandungan terperinci Bermula dengan Paper.js: Laluan dan Geometri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Di manakah tema terletak dalam Windows 11? Di manakah tema terletak dalam Windows 11? Aug 01, 2023 am 09:29 AM

Windows 11 mempunyai begitu banyak pilihan penyesuaian, termasuk pelbagai tema dan kertas dinding. Walaupun tema ini adalah estetik dengan cara mereka sendiri, sesetengah pengguna masih tertanya-tanya di mana mereka berada di latar belakang pada Windows 11. Panduan ini akan menunjukkan kepada anda cara berbeza untuk mengakses lokasi tema Windows 11 anda. Apakah tema lalai Windows 11? Latar belakang tema lalai Windows 11 ialah bunga biru diraja abstrak yang mekar dengan latar belakang biru langit. Latar belakang ini adalah salah satu yang paling popular, terima kasih kepada jangkaan sebelum keluaran sistem pengendalian. Walau bagaimanapun, sistem pengendalian juga dilengkapi dengan pelbagai latar belakang lain. Oleh itu, anda boleh menukar latar belakang tema desktop Windows 11 pada bila-bila masa. Tema disimpan dalam Windo

Penggunaan garis miring dan garis miring belakang yang berbeza dalam laluan fail Penggunaan garis miring dan garis miring belakang yang berbeza dalam laluan fail Feb 26, 2024 pm 04:36 PM

Laluan fail ialah rentetan yang digunakan oleh sistem pengendalian untuk mengenal pasti dan mencari fail atau folder. Dalam laluan fail, terdapat dua simbol biasa yang memisahkan laluan, iaitu garis miring ke hadapan (/) dan garis miring ke belakang (). Kedua-dua simbol ini mempunyai kegunaan dan makna yang berbeza dalam sistem pengendalian yang berbeza. Garis miring ke hadapan (/) ialah pemisah laluan yang biasa digunakan dalam sistem Unix dan Linux. Pada sistem ini, laluan fail bermula dari direktori akar (/) dan dipisahkan oleh garis miring ke hadapan antara setiap direktori. Sebagai contoh, laluan /home/user/Docume

Cara membetulkan ralat: Kelas utama tidak ditemui atau dimuatkan dalam Java Cara membetulkan ralat: Kelas utama tidak ditemui atau dimuatkan dalam Java Oct 26, 2023 pm 11:17 PM

Video ini tidak boleh dimainkan kerana ralat teknikal. (Kod Ralat: 102006) Panduan ini menyediakan pembetulan mudah untuk masalah biasa ini dan meneruskan perjalanan pengekodan anda. Kami juga akan membincangkan punca ralat Java dan cara mencegahnya pada masa hadapan. Apakah "Ralat: Kelas utama tidak dijumpai atau dimuatkan" dalam Java? Java ialah bahasa pengaturcaraan yang berkuasa yang membolehkan pembangun mencipta pelbagai aplikasi. Walau bagaimanapun, fleksibiliti dan kecekapannya datang dengan pelbagai kesilapan biasa yang boleh berlaku semasa pembangunan. Salah satu gangguan ialah Ralat: User_jvm_args.txt kelas utama tidak ditemui atau dimuatkan, yang berlaku apabila Mesin Maya Java (JVM) tidak dapat mencari kelas utama untuk melaksanakan program. Ralat ini bertindak sebagai penghalang jalan walaupun dalam

Apakah perbezaan dalam laluan 'Komputer Saya' dalam Win11? Cara cepat untuk mencarinya! Apakah perbezaan dalam laluan 'Komputer Saya' dalam Win11? Cara cepat untuk mencarinya! Mar 29, 2024 pm 12:33 PM

Apakah perbezaan dalam laluan "Komputer Saya" dalam Win11? Cara cepat untuk mencarinya! Memandangkan sistem Windows sentiasa dikemas kini, sistem Windows 11 terkini turut membawakan beberapa perubahan dan fungsi baharu. Salah satu masalah biasa ialah pengguna tidak dapat mencari laluan ke "Komputer Saya" dalam sistem Win11 Ini biasanya merupakan operasi mudah dalam sistem Windows sebelumnya. Artikel ini akan memperkenalkan cara laluan "Komputer Saya" berbeza dalam sistem Win11, dan cara mencarinya dengan cepat. Dalam Windows1

Dapatkan bahagian direktori laluan fail menggunakan fungsi path/filepath.Dir Dapatkan bahagian direktori laluan fail menggunakan fungsi path/filepath.Dir Jul 27, 2023 am 09:06 AM

Gunakan fungsi path/filepath.Dir untuk mendapatkan bahagian direktori laluan fail Dalam proses pembangunan harian kami, pemprosesan laluan fail sering terlibat. Kadangkala, kita perlu mendapatkan bahagian direktori laluan fail, iaitu laluan ke folder di mana fail itu terletak. Dalam bahasa Go, anda boleh menggunakan fungsi Dir yang disediakan oleh pakej path/filepath untuk melaksanakan fungsi ini. Tandatangan fungsi Dir adalah seperti berikut: funcDir(pathstring)string Fungsi Dir menerima perkataan

Analisis laluan penyimpanan kod sumber kernel Linux Analisis laluan penyimpanan kod sumber kernel Linux Mar 14, 2024 am 11:45 AM

Kernel Linux ialah kernel sistem pengendalian sumber terbuka yang kod sumbernya disimpan dalam repositori kod khusus. Dalam artikel ini, kami akan menganalisis laluan penyimpanan kod sumber kernel Linux secara terperinci dan menggunakan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik. 1. Laluan penyimpanan kod sumber kernel Linux Kod sumber kernel Linux disimpan dalam repositori Git yang dipanggil linux, yang dihoskan di [https://github.com/torvalds/linux](http

Bagaimana untuk mencari laluan penyimpanan fail RPM dalam sistem Linux? Bagaimana untuk mencari laluan penyimpanan fail RPM dalam sistem Linux? Mar 14, 2024 pm 04:42 PM

Dalam sistem Linux, RPM (RedHatPackageManager) ialah alat pengurusan pakej perisian biasa yang digunakan untuk memasang, menaik taraf dan memadam pakej perisian. Kadangkala kita perlu mencari laluan storan fail RPM yang dipasang untuk carian atau operasi lain. Berikut akan memperkenalkan cara mencari laluan storan fail RPM dalam sistem Linux, dan memberikan contoh kod khusus. Pertama, kita boleh menggunakan arahan rpm untuk mencari pakej RPM yang dipasang dan laluan storannya. Buka

Cara menggunakan modul os.path untuk mendapatkan pelbagai bahagian laluan fail dalam Python 3.x Cara menggunakan modul os.path untuk mendapatkan pelbagai bahagian laluan fail dalam Python 3.x Jul 30, 2023 pm 02:57 PM

Cara menggunakan modul os.path dalam Python3.x untuk mendapatkan pelbagai bahagian laluan fail Dalam pengaturcaraan Python harian, kita selalunya perlu beroperasi pada laluan fail, seperti mendapatkan nama fail, direktori fail, sambungan, dsb. daripada laluan itu. Dalam Python, anda boleh menggunakan modul os.path untuk melaksanakan operasi ini. Artikel ini akan memperkenalkan cara menggunakan modul os.path untuk mendapatkan pelbagai bahagian laluan fail untuk manipulasi fail yang lebih baik. Modul os.path menyediakan satu siri

See all articles