<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=JavaScript%3A%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8%2Fp5.collide2D</id>
	<title>JavaScript:Библиотеки/p5.collide2D - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=JavaScript%3A%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8%2Fp5.collide2D"/>
	<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=JavaScript:%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8/p5.collide2D&amp;action=history"/>
	<updated>2026-04-13T05:37:17Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=JavaScript:%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8/p5.collide2D&amp;diff=7672880&amp;oldid=prev</id>
		<title>EducationBot в 14:14, 14 мая 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=JavaScript:%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8/p5.collide2D&amp;diff=7672880&amp;oldid=prev"/>
		<updated>2023-05-14T14:14:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://wikihandbk.com/ruwiki/index.php?title=JavaScript:%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8/p5.collide2D&amp;amp;diff=7672880&amp;amp;oldid=40086&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=JavaScript:%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8/p5.collide2D&amp;diff=40086&amp;oldid=prev</id>
		<title>Myagkij: /* collideLineRect(x1, y1, x2, y2, rx, ry, rw, rh, [calcIntersection]) */</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=JavaScript:%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8/p5.collide2D&amp;diff=40086&amp;oldid=prev"/>
		<updated>2018-11-02T15:01:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;collideLineRect(x1, y1, x2, y2, rx, ry, rw, rh, [calcIntersection])&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{JavaScript панель перехода}}&lt;br /&gt;
&lt;br /&gt;
{{Перевод от Сubewriter}}&lt;br /&gt;
{{Myagkij-редактор}}&lt;br /&gt;
&lt;br /&gt;
{{Черновик}}&lt;br /&gt;
&lt;br /&gt;
=p5.collide2D&amp;lt;ref&amp;gt;[https://github.com/bmoren/p5.collide2D#collidepointpoint github.com - p5.collide2D]&amp;lt;/ref&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
[[File:p5collide2d_js_1.png|center]]&lt;br /&gt;
&lt;br /&gt;
Это библиотека, позволяющая определять столкновения между 2D-объектами, созданными с помощью библиотеки p5.js.&lt;br /&gt;
&lt;br /&gt;
Кроме того, библиотека p5.collide2D содержит несколько версий функций из [http://www.jeffreythompson.org/collision-detection/ книги «Определение столкновений» (англ. «Collision detection») Джеффри Томпсона]. Его код был написан согласно лицензии [https://creativecommons.org/licenses/by-nc-sa/4.0/ CC BY-NC-SA 4.0], а это значит, что код этой библиотеки имеет такую же лицензию.&lt;br /&gt;
О том, как добавить библиотеку в свой скетч p5.js, читайте [https://p5js.org/libraries/ тут].&lt;br /&gt;
&lt;br /&gt;
Для корректной работы этой библиотеки необходимо, чтобы у функций rectMode() и ellipseMode() были заданы параметры по умолчанию: у первой – «CORNER», а у второй – «CENTER».&lt;br /&gt;
Все функции p5.collide2D возвращают «true», если объекты столкнулись, и «false», если нет.&lt;br /&gt;
&lt;br /&gt;
== Скетчи-примеры ==&lt;br /&gt;
&lt;br /&gt;
* [https://bmoren.github.io/p5.collide2D/examples/basic/index.html Прямоугольник, меняющий цвет (основы)]&lt;br /&gt;
* [https://bmoren.github.io/p5.collide2D/examples/basicButton/index.html Кнопка, созданная с помощью функции обратного вызова]&lt;br /&gt;
* [https://bmoren.github.io/p5.collide2D/examples/objectCollision/index.html Столкновение с объектами]&lt;br /&gt;
* [https://bmoren.github.io/p5.collide2D/examples/randomPlacement/index.html Случайно расположенные объекты (без прикосновений)]&lt;br /&gt;
* [https://bmoren.github.io/p5.collide2D/examples/swords/index.html Битва на мечах]&lt;br /&gt;
&lt;br /&gt;
== Функции ==&lt;br /&gt;
&lt;br /&gt;
=== Вспомогательные функции ===&lt;br /&gt;
&lt;br /&gt;
* collideDebug()&lt;br /&gt;
&lt;br /&gt;
=== Функции для определения столкновений ===&lt;br /&gt;
&lt;br /&gt;
* collidePointPoint()&lt;br /&gt;
* collidePointCircle()&lt;br /&gt;
* collidePointRect()&lt;br /&gt;
* collidePointLine()&lt;br /&gt;
* collideRectRect()&lt;br /&gt;
* collideCircleCircle()&lt;br /&gt;
* collideRectCircle()&lt;br /&gt;
* collideLineLine()&lt;br /&gt;
* collideLineCircle()&lt;br /&gt;
* collideLineRect()&lt;br /&gt;
* collidePointPoly()&lt;br /&gt;
* collideCirclePoly()&lt;br /&gt;
* collideRectPoly()&lt;br /&gt;
* collideLinePoly()&lt;br /&gt;
* collidePolyPoly()&lt;br /&gt;
* collidePointTriangle()&lt;br /&gt;
* collidePointArc()&lt;br /&gt;
&lt;br /&gt;
== Описание и примеры использования функций ==&lt;br /&gt;
&lt;br /&gt;
=== collideDebug(debugMode, size, color) ===&lt;br /&gt;
&lt;br /&gt;
Включает режим отладки столкновений. Рисует эллипс в точке экрана, где можно применить и рассчитать столкновение между объектами.&lt;br /&gt;
&lt;br /&gt;
Применима для следующих функций:&lt;br /&gt;
&lt;br /&gt;
* collideLineCircle()&lt;br /&gt;
* collideLineLine()&lt;br /&gt;
* collideLineRect()&lt;br /&gt;
* collideCirclePoly()&lt;br /&gt;
* collideRectPoly()&lt;br /&gt;
* collideLinePoly()&lt;br /&gt;
* collidePolyPoly()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
function setup() {&lt;br /&gt;
  collideDebug(true);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collidePointPoint(x, y, x2, y2, [buffer]) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение одной точки с другой. Опционально можно задать «буферную зону», расширяющую область столкновения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
// Простой пример использования функции collidePointPoint()&lt;br /&gt;
&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
      background(255);&lt;br /&gt;
      ellipse(100,100,1,1);       // если используете вариант&lt;br /&gt;
                                  // с буферной зоной, &lt;br /&gt;
                                  // поменяйте размер эллипса на 10х10 &lt;br /&gt;
      ellipse(mouseX,mouseY,1,1); // если используете вариант&lt;br /&gt;
                                  // с буферной зоной,&lt;br /&gt;
                                  // поменяйте размер эллипса на 10х10 &lt;br /&gt;
&lt;br /&gt;
	// простой вариант без буферной зоны:&lt;br /&gt;
	hit = collidePointPoint(100,100,mouseX,mouseY)&lt;br /&gt;
&lt;br /&gt;
	// вариант с буферной зоной размером 10х10 пикселей:&lt;br /&gt;
	//hit = collidePointPoint(100,100,mouseX,mouseY,10)&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
       //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collidePointCircle(pointX, pointY, circleX, circleY, diameter) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение точки с эллипсом. Для корректной работы этой функции необходимо, чтобы в функции ellipseMode() был задан параметр «CENTER».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
	ellipse(200,200,100,100);&lt;br /&gt;
	point(mouseX,mouseY);&lt;br /&gt;
&lt;br /&gt;
	hit = collidePointCircle(mouseX,mouseY,200,200,100)&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collidePointRect(pointX, pointY, x, y, width, height) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение между точкой и прямоугольником. Для корректной работы этой функции необходимо, чтобы в функции rectMode() был задан параметр «CORNER».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
  background(255);&lt;br /&gt;
	rect(200,200,100,150);&lt;br /&gt;
&lt;br /&gt;
	hit = collidePointRect(mouseX,mouseY,200,200,100,150);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
  	  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collidePointLine(pointX, pointY, x, y, x2, y2, [buffer]) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение между точкой и линией. Опционально можно задать буферную зону, расширяющую область столкновения (по умолчанию в параметре «buffer» стоит «0.1»).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw(){&lt;br /&gt;
  background(255);&lt;br /&gt;
	line(200,300,100,150);&lt;br /&gt;
	point(mouseX,mouseY);&lt;br /&gt;
&lt;br /&gt;
  // используем опциональный параметр для буферной зоны &lt;br /&gt;
  // и задаем ему значение «0.5»:&lt;br /&gt;
	hit = collidePointLine(mouseX,mouseY,200,300,100,150, 0.5);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
  //  &amp;quot;столкновение? &amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collideCircleCircle(circleX, circleY,circleDiameter, circleX2, circleY2, circleDiameter2) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение между двумя эллипсами. Для корректной работы этой функции необходимо, чтобы в функции ellipseMode() был выставлен параметр «CENTER».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
	ellipse(200,200,100,100);&lt;br /&gt;
	ellipse(mouseX,mouseY,150,150);&lt;br /&gt;
&lt;br /&gt;
	hit = collideCircleCircle(mouseX,mouseY,150,200,200,100)&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collideRectRect(x, y, width, height, x2, y2, width2, height2) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение между двумя прямоугольниками. Чтобы эта функция работала корректно, в функции rectMode() нужно задать параметр «CORNER».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
  background(255);&lt;br /&gt;
	rect(200,200,100,150);&lt;br /&gt;
	rect(mouseX,mouseY,50,75);&lt;br /&gt;
&lt;br /&gt;
	hit = collideRectRect(200,200,100,150,mouseX,mouseY,50,75);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
   	  //  &amp;quot;столкновение? &amp;quot; &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collideRectCircle(x1, y1, width1, height1, cx, cy, diameter) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение между прямоугольником и эллипсом. Чтобы эта функция работала корректно, у функции rectMode() нужно задать режим «CORNER», а у ellipseMode() – «CENTER».&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
  background(255);&lt;br /&gt;
	rect(200,200,100,150);&lt;br /&gt;
	ellipse(mouseX,mouseY,100,100);&lt;br /&gt;
&lt;br /&gt;
	hit = collideRectCircle(200,200,100,150,mouseX,mouseY,100);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collideLineLine(x1, y1, x2, y2, x3, y3, x4, y4, [calcIntersection]) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение между двумя линиями. Принимает опциональный булев параметр «calcIntersection», включающий/выключающий расчет точки пересечения. Если задать в нем «true», то в случае пересечения функция вернет объект с XY-координатами пересечения, а если пересечения зафиксировано не будет, то эта функция с каждым новым кадром будет возвращать объект с XY-координатами со значением «false». Поддерживает отладку с помощью collideDebug().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
// простой пример использования функции collideLineLine()&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw(){&lt;br /&gt;
  background(255);&lt;br /&gt;
  line(200,300,100,150);&lt;br /&gt;
  line(mouseX,mouseY,350,50);&lt;br /&gt;
  hit = collideLineLine(200,300,100,150,mouseX,mouseY,350,50);&lt;br /&gt;
&lt;br /&gt;
  print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
// &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
// возвращает объект, содержащий XY-координаты места пересечения,&lt;br /&gt;
// используя для этого опциональный параметр «calcIntersection»:&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw(){&lt;br /&gt;
  background(255);&lt;br /&gt;
  line(200,300,100,150);&lt;br /&gt;
  line(mouseX,mouseY,350,50);&lt;br /&gt;
&lt;br /&gt;
  hit = collideLineLine(200,300,100,150,mouseX,mouseY,350,50,true);&lt;br /&gt;
&lt;br /&gt;
  print(&amp;quot;X-intersection:&amp;quot; + hit.x); &lt;br /&gt;
    //  &amp;quot;X-координата пересечения:&amp;quot;&lt;br /&gt;
  print(&amp;quot;Y-intersection:&amp;quot; + hit.y);&lt;br /&gt;
    //  &amp;quot;Y-координата пересечения:&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collideLineCircle(x1, y1, x2, y2, cx, cy, diameter) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение точки и эллипса. Поддерживает отладку с помощью collideDebug().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw(){&lt;br /&gt;
  background(255);&lt;br /&gt;
	line(200,300,100,150);&lt;br /&gt;
	ellipse(mouseX,mouseY,50,50);&lt;br /&gt;
	hit = collideLineCircle(200,300,100,150,mouseX,mouseY,50);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
       //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collideLineRect(x1, y1, x2, y2, rx, ry, rw, rh, [calcIntersection]) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение между линией и прямоугольником. Принимает опциональный булев параметр «calcIntersection», включающий/выключающий расчет точек пересечения. Если задать в нем «true», то в случае пересечения функция вернет объект, содержащий объекты с XY-координатами пересечений с верхней, нижней, правой и левой сторонами прямоугольника. Если пересечения зафиксировано не будет, то эта функция с каждым новым кадром будет возвращать объект с XY-координатами со значением «false». Поддерживает отладку с помощью collideDebug().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
// простой пример использования функции collideLineRect()&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
	rect(200,300,100,150);&lt;br /&gt;
	line(mouseX,mouseY,350,50);&lt;br /&gt;
&lt;br /&gt;
	hit = collideLineRect(mouseX,mouseY,350,50,200,300,100,150);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
   	  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
// возвращает объект, содержащий XY-координаты &lt;br /&gt;
// пересечения со всеми четырьмя сторонами прямоугольника,&lt;br /&gt;
// при помощи опционального булева параметра «calcIntersection»:&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
	rect(200,300,100,150);&lt;br /&gt;
	line(mouseX,mouseY,350,50);&lt;br /&gt;
&lt;br /&gt;
	hit = collideLineRect(mouseX,mouseY,350,50,200,300,100,150,true);&lt;br /&gt;
&lt;br /&gt;
  // возвращаем объект, содержащий объекты&lt;br /&gt;
  // с XY-координатами пересечения линии&lt;br /&gt;
  // с верхней, нижней, правой и левой сторонами прямоугольника:&lt;br /&gt;
  print(&amp;quot;bottomX: &amp;quot; + hit.bottom.x);&lt;br /&gt;
    //  &amp;quot;X-координата пересечения с нижней стороной: &amp;quot;&lt;br /&gt;
  print(&amp;quot;bottomY: &amp;quot; + hit.bottom.y);&lt;br /&gt;
    //  &amp;quot;Y-координата пересечения с нижней стороной: &amp;quot;&lt;br /&gt;
  print(&amp;quot;topX: &amp;quot; + hit.top.x);&lt;br /&gt;
    //  &amp;quot;X-координата пересечения с верхней стороной: &amp;quot;&lt;br /&gt;
  print(&amp;quot;topY: &amp;quot; + hit.top.y);&lt;br /&gt;
    //  &amp;quot;Y-координата пересечения с верхней стороной: &amp;quot;&lt;br /&gt;
  print(&amp;quot;leftX: &amp;quot; + hit.left.x);&lt;br /&gt;
    //  &amp;quot;X-координата пересечения с левой стороной: &amp;quot;&lt;br /&gt;
  print(&amp;quot;leftY: &amp;quot; + hit.left.y);&lt;br /&gt;
    //  &amp;quot;Y-координата пересечения с левой стороной: &amp;quot;&lt;br /&gt;
  print(&amp;quot;rightX: &amp;quot; + hit.right.x);&lt;br /&gt;
    //  &amp;quot;X-координата пересечения с правой стороной: &amp;quot;&lt;br /&gt;
  print(&amp;quot;rightY: &amp;quot; + hit.right.y);&lt;br /&gt;
    //  &amp;quot;Y-координата пересечения с правой стороной: &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collidePointPoly(pointX,pointY,vectorArray) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение точки с полигоном. В параметрах «pointX» и «pointY» задаются XY-координаты расположения точки. В параметре «vectorArray» задается массив объектов [http://p5js.org/reference/#/p5/createVector p5.Vector], содержащих XY-координаты вершин полигона. Эта функция работает с многосторонними полигонами, а также с «вогнутыми» полигонами (полигонами, чьи стороны пересекаются друг с другом).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
var poly = []; // массив для хранения вершин полигона &lt;br /&gt;
function setup() {&lt;br /&gt;
	createCanvas(500,500);&lt;br /&gt;
	poly[0] = createVector(123,231);     // задаем XY-позиции&lt;br /&gt;
	poly[1] = createVector(10,111);      // вершин полигона&lt;br /&gt;
	poly[2] = createVector(20,23);&lt;br /&gt;
	poly[3] = createVector(390,33);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
&lt;br /&gt;
  // рисуем полигон на основе заданных выше вершин:&lt;br /&gt;
	beginShape();&lt;br /&gt;
	for(i=0; i &amp;lt; poly.length; i++){&lt;br /&gt;
		vertex(poly[i].x,poly[i].y);&lt;br /&gt;
	}&lt;br /&gt;
	endShape(CLOSE);&lt;br /&gt;
&lt;br /&gt;
	ellipse(mouseX,mouseY,10,10); // рисуем маленький эллипс&lt;br /&gt;
                              // в месте курсора мыши&lt;br /&gt;
&lt;br /&gt;
// третий параметр – это массив вершин: &lt;br /&gt;
	hit = collidePointPoly(mouseX,mouseY,poly);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collideCirclePoly(x,y,diameter,vectorArray, [interiorCollision]) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение эллипса и полигона. В параметрах «x», «y» и «diameter» задаются XY-координаты и диаметр эллипса, а в параметре «vectorArray» – массив объектов [http://p5js.org/reference/#/p5/createVector p5.Vector] с XY-координатами вершин полигона. Эта функция работает с многосторонними полигонами, а также с «вогнутыми» полигонами (полигонами, чьи стороны пересекаются друг с другом). Также принимает опциональный пятый булев параметр «interiorCollision», включающий/выключающий определение столкновений, если эллипс полностью находится внутри полигона. По умолчанию эта функция выключена, чтобы не рассчитывать столкновение эллипса с краями полигона по два раза (и тем самым сэкономить вычислительные ресурсы). Поддерживает отладку с помощью функции collideDebug().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
var poly = [];&lt;br /&gt;
function setup() {&lt;br /&gt;
	createCanvas(windowWidth,windowHeight);&lt;br /&gt;
	collideDebug(true)&lt;br /&gt;
	poly[0] = createVector(123,231);  // задаем XY-координаты &lt;br /&gt;
	poly[1] = createVector(10,111);   // вершин полигона&lt;br /&gt;
	poly[2] = createVector(20,23);&lt;br /&gt;
	poly[3] = createVector(390,33);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
&lt;br /&gt;
  // рисуем полигон на основе заданных выше вершин:&lt;br /&gt;
	beginShape();&lt;br /&gt;
	for(i=0; i &amp;lt; poly.length; i++){&lt;br /&gt;
		vertex(poly[i].x,poly[i].y);&lt;br /&gt;
	}&lt;br /&gt;
	endShape(CLOSE);&lt;br /&gt;
&lt;br /&gt;
	ellipse(mouseX,mouseY,45,45);&lt;br /&gt;
&lt;br /&gt;
	hit = collideCirclePoly(mouseX,mouseY,45,poly);&lt;br /&gt;
&lt;br /&gt;
	// используйте этот вариант, если нужно рассчитать&lt;br /&gt;
// столкновение эллипса, находящегося внутри полигона:&lt;br /&gt;
	// hit = collideCirclePoly(mouseX,mouseY,45,poly,true);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collideRectPoly(x,y,width,height,vectorArray, [interiorCollision]) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение прямоугольника с полигоном. В параметрах «x», «y», «width» и «height» задаются XY-координаты, ширина и высота прямоугольника. В параметре «vectorArray» – массив объектов [http://p5js.org/reference/#/p5/createVector p5.Vector], содержащих XY-координаты вершин полигона. Эта функция работает с многосторонними полигонами, а также с «вогнутыми» полигонами (полигонами, чьи стороны пересекаются друг с другом). Также принимает опциональный шестой булев параметр «interiorCollision», включающий/выключающий определение столкновений, если прямоугольник полностью находится внутри полигона. По умолчанию эта функция выключена, чтобы не рассчитывать столкновения с одними и теми же краями по два раза (и тем самым сэкономить вычислительные ресурсы). Поддерживает отладку при помощи collideDebug().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
var poly = [];&lt;br /&gt;
function setup() {&lt;br /&gt;
	createCanvas(windowWidth,windowHeight);&lt;br /&gt;
	collideDebug(true)&lt;br /&gt;
	poly[0] = createVector(323,431);     // задаем XY-координаты &lt;br /&gt;
	poly[1] = createVector(210,311);     // вершин полигона&lt;br /&gt;
	poly[2] = createVector(220,223);&lt;br /&gt;
	poly[3] = createVector(590,233);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
	push()&lt;br /&gt;
	beginShape();&lt;br /&gt;
	// рисуем полигон на основе заданных выше вершин:&lt;br /&gt;
	for(i=0; i &amp;lt; poly.length; i++){&lt;br /&gt;
		vertex(poly[i].x,poly[i].y);&lt;br /&gt;
	}&lt;br /&gt;
	endShape(CLOSE);&lt;br /&gt;
&lt;br /&gt;
	rect(mouseX,mouseY,45,100);&lt;br /&gt;
&lt;br /&gt;
	hit = collideRectPoly(mouseX,mouseY,45,100,poly);&lt;br /&gt;
	&lt;br /&gt;
     // используйте этот вариант, если прямоугольник&lt;br /&gt;
     // находится полностью внутри полигона:&lt;br /&gt;
	// hit = collideRectPoly(mouseX,mouseY,45,100,poly,true);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
      &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collideLinePoly(x1, y1, x2, y2, vertices) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение линии с полигоном. В параметрах «x1», «y1», «x2» и «y2» задаются координаты линии, а в параметре «vertices» – массив объектов [http://p5js.org/reference/#/p5/createVector p5.Vector] с XY-координатами вершин полигона. Эта функция работает с многосторонними полигонами, а также с «вогнутыми» полигонами (полигонами, чьи стороны пересекаются друг с другом). Поддерживает отладку с помощью функции collideDebug().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
var poly = new Array(16);;&lt;br /&gt;
function setup() {&lt;br /&gt;
	createCanvas(windowWidth,windowHeight);&lt;br /&gt;
	collideDebug(true)&lt;br /&gt;
&lt;br /&gt;
	// создаем 16-сторонний полигон:&lt;br /&gt;
  var angle = TWO_PI / poly.length;&lt;br /&gt;
  for (var i=0; i&amp;lt;poly.length; i++) {&lt;br /&gt;
    var a = angle * i;&lt;br /&gt;
    var x = 300 + cos(a) * 100;&lt;br /&gt;
    var y = 200 + sin(a) * 100;&lt;br /&gt;
    poly[i] = createVector(x,y);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
	beginShape();&lt;br /&gt;
	// рисуем полигон на основе заданных выше вершин:&lt;br /&gt;
	for(i=0; i &amp;lt; poly.length; i++){&lt;br /&gt;
		vertex(poly[i].x,poly[i].y);&lt;br /&gt;
	}&lt;br /&gt;
	endShape(CLOSE);&lt;br /&gt;
&lt;br /&gt;
	line(10,10,mouseX,mouseY);&lt;br /&gt;
&lt;br /&gt;
	hit = collideLinePoly(mouseX,mouseY,45,100,poly);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collidePolyPoly(polygon1, polygon2, [interiorCollision]) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение между двумя полигонами. В параметрах «polygon1» и «polygon2» задаются массивы объектов [http://p5js.org/reference/#/p5/createVector p5.Vector] с XY-координатами вершин двух этих полигонов. Эта функция работает с многосторонними полигонами, а также с «вогнутыми» полигонами (полигонами, чьи стороны пересекаются друг с другом). Также принимает опциональный третий булев параметр «interiorCollision», включающий/выключающий определение столкновений, если один полигон полностью находится внутри другого полигона. По умолчанию эта функция выключена, чтобы не рассчитывать по два раза столкновение с одними и теми же сторонами (и тем самым сэкономить вычислительные ресурсы). Поддерживает отладку с помощью функции collideDebug().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
// этот скетч-пример – адаптация кода Джеффри Томпсона&lt;br /&gt;
&lt;br /&gt;
var hit = false;&lt;br /&gt;
var poly = new Array(8);&lt;br /&gt;
var randomPoly = []&lt;br /&gt;
function setup() {&lt;br /&gt;
	createCanvas(windowWidth,windowHeight);&lt;br /&gt;
	collideDebug(true) // включаем режим отладки&lt;br /&gt;
&lt;br /&gt;
	// создаем полигон с одинаковыми сторонами:&lt;br /&gt;
  var angle = TWO_PI / poly.length;&lt;br /&gt;
  for (var i=0; i&amp;lt;poly.length; i++) {&lt;br /&gt;
    var a = angle * i;&lt;br /&gt;
    var x = 300 + cos(a) * 100;&lt;br /&gt;
    var y = 200 + sin(a) * 100;&lt;br /&gt;
    poly[i] = createVector(x,y);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // создаем полигон со сторонами случайного размера:&lt;br /&gt;
  var a = 0;&lt;br /&gt;
  var i = 0;&lt;br /&gt;
  while (a &amp;lt; 360) {&lt;br /&gt;
    var x = cos(radians(a)) * random(30,50);&lt;br /&gt;
    var y = sin(radians(a)) * random(30,50);&lt;br /&gt;
    randomPoly[i] = createVector(x,y);&lt;br /&gt;
    a += random(15, 40);&lt;br /&gt;
    i += 1;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
 // привязываем позицию полигона &lt;br /&gt;
 // со сторонами случайного размера&lt;br /&gt;
 // к позиции мышки: &lt;br /&gt;
  var mouse = createVector(mouseX, mouseY);&lt;br /&gt;
  var diff = mouse.sub(randomPoly[0]);&lt;br /&gt;
&lt;br /&gt;
  for (i=0; i &amp;lt; randomPoly.length; i++) {&lt;br /&gt;
    randomPoly[i].add(diff);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
	beginShape();&lt;br /&gt;
	// рисуем полигон на основе заданных выше вершин:&lt;br /&gt;
	for(i=0; i &amp;lt; poly.length; i++){&lt;br /&gt;
		vertex(poly[i].x,poly[i].y);&lt;br /&gt;
	}&lt;br /&gt;
	endShape(CLOSE);&lt;br /&gt;
	beginShape();&lt;br /&gt;
	for(i=0; i &amp;lt; randomPoly.length; i++){&lt;br /&gt;
		vertex(randomPoly[i].x,randomPoly[i].y);&lt;br /&gt;
	}&lt;br /&gt;
	endShape(CLOSE);&lt;br /&gt;
&lt;br /&gt;
	hit = collidePolyPoly(poly,randomPoly,true);&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
   	  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collidePointTriangle(px, py, x1, y1, x2, y2, x3, y3) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение точки и треугольника. Для этого также можно использовать collidePointPoly(), но эта функция более эффективна.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
	triangle(300,200,350,300,250,300)&lt;br /&gt;
	ellipse(mouseX,mouseY,10,10);&lt;br /&gt;
&lt;br /&gt;
	hit = collidePointTriangle(mouseX,mouseY, 300,200,350,300,250,300)&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit)&lt;br /&gt;
  //  &amp;quot;столкновение? &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Функции для столкновения с треугольником ===&lt;br /&gt;
&lt;br /&gt;
Расчет столкновения нужной фигуры (будь то эллипс, прямоугольник, линия или другой треугольник) с треугольником осуществляется при помощи функции для расчета столкновения этой фигуры с полигоном. Соответственно, в качестве полигона должен быть задан трехсторонний полигон (то есть, по сути, треугольник). &lt;br /&gt;
&lt;br /&gt;
'''Примечание:''' Вершины треугольного полигона задаются с помощью трех объектов [http://p5js.org/reference/#/p5/createVector p5.Vector] (см. пример ниже).&lt;br /&gt;
&lt;br /&gt;
* collideCirclePoly() – для расчета столкновения эллипса с треугольником&lt;br /&gt;
* collideRectPoly() – для расчета столкновения прямоугольника с треугольником&lt;br /&gt;
* collideLinePoly() – для расчета столкновения линии с треугольником&lt;br /&gt;
* collidePolyPoly() – для расчета столкновения треугольника с треугольником&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var hit = false;&lt;br /&gt;
var triPoly = []&lt;br /&gt;
function setup() {&lt;br /&gt;
	createCanvas(windowWidth,windowHeight);&lt;br /&gt;
	collideDebug(true)&lt;br /&gt;
&lt;br /&gt;
	triPoly[0] = createVector(300,200);&lt;br /&gt;
	triPoly[1] = createVector(350,300);&lt;br /&gt;
	triPoly[2] = createVector(250,300);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(255);&lt;br /&gt;
&lt;br /&gt;
  // мы можем нарисовать этот треугольник&lt;br /&gt;
  // с помощью beginShape() и endShape() &lt;br /&gt;
  // и итерирования через массив «triPoly», но так – проще:&lt;br /&gt;
	triangle(300,200,350,300,250,300)&lt;br /&gt;
	ellipse(mouseX,mouseY,45,45);&lt;br /&gt;
&lt;br /&gt;
	hit = collideCirclePoly(mouseX,mouseY,45, triPoly)&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit)&lt;br /&gt;
  //  &amp;quot;столкновение &amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== collidePointArc(pointX, pointY, arcCenterX, arcCenterY, arcRadius, arcRotationAngle, arcAngle, [buffer]) ===&lt;br /&gt;
&lt;br /&gt;
Рассчитывает столкновение точки с аркой.&lt;br /&gt;
&lt;br /&gt;
[[File:p5.collide2D_collidePointArc_1.png|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
var ARC_RADIUS = 100;&lt;br /&gt;
var ARC_ANGLE = Math.PI/3;&lt;br /&gt;
var ROTATION_ANGLE = -Math.PI / 4;&lt;br /&gt;
var hit = false;&lt;br /&gt;
function draw() {&lt;br /&gt;
	background(220);&lt;br /&gt;
	push();&lt;br /&gt;
	// перемещаемся к центру холста:&lt;br /&gt;
	translate(width / 2, height / 2);&lt;br /&gt;
	// вращаем под некоторым углом:&lt;br /&gt;
	rotate(ROTATION_ANGLE);&lt;br /&gt;
	fill(color(180, 220, 210));&lt;br /&gt;
	stroke(10);&lt;br /&gt;
	arc(0, 0, 2 * ARC_RADIUS, 2 * ARC_RADIUS, -ARC_ANGLE/2, ARC_ANGLE/2, PIE);&lt;br /&gt;
	pop();&lt;br /&gt;
	point(mouseX, mouseY);&lt;br /&gt;
	hit = collidePointArc(mouseX, mouseY, width / 2, height / 2, ARC_RADIUS, ROTATION_ANGLE, ARC_ANGLE);&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;colliding? &amp;quot; + hit);&lt;br /&gt;
   	  //  &amp;quot;столкновение? &amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=См.также=&lt;br /&gt;
&lt;br /&gt;
=Внешние ссылки=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SEO&lt;br /&gt;
|Заголовок статьи=JavaScript: p5.collide2D / Онлайн справочник - wikihandbk.com&lt;br /&gt;
|Ключевые слова=p5.collide2D&lt;br /&gt;
|Описание статьи=&lt;br /&gt;
|Изображение статьи для Open Graph=&lt;br /&gt;
|Адрес страницы для schemaNewsArticle=&amp;lt;nowiki&amp;gt;http://wikihandbk.com/wiki/JavaScript:Библиотеки/p5.collide2D&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Изображение статьи для schemaNewsArticle=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Высота изображения статьи для schemaNewsArticle=&lt;br /&gt;
|Ширина изображения статьи для schemaNewsArticle=&lt;br /&gt;
|Дата публикации для schemaNewsArticle=2018-09-15&lt;br /&gt;
|Автор=Мякишев Е.А.&lt;br /&gt;
|Издатель=myagkij&lt;br /&gt;
|Логотип издателя для schemaNewsArticle=&amp;lt;nowiki&amp;gt;http://wikihandbk.com/ruwiki/images/6/61/Tech_geek_logo_1x.jpg&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Ширина логотипа издателя для schemaNewsArticle=60&lt;br /&gt;
|Высота логотипа издателя для schemaNewsArticle=45&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Myagkij</name></author>
	</entry>
</feed>