Jump to content
  • 0

Библиотека Raphael


DarkKnight
 Share

Question

Здравсвуйте.

Подскажите пожалуйста.

Есть код

var paper = Raphael(ph, 600, 600); 
var shapeA = paper.path("M 300 10 L 400 10 L 600 500 L 500 500 L 400 300 L 350 300 L 250 500 L 150 500 Z").attr("fill", "grey");
// Могу получить длину всей фигуры
var lengthShapeA = shapeA.getTotalLength();
// Могу получить координаты всех точек на КОНТУРЕ фигуры
for(var i = 0; i <= lengthShapeA; i ++)
{
var allPoints = shapeA .getPointAtLength(i, lengthShapeA);
}

А как мне получить КООРДИНАТЫ ЛЮБЫХ 5 точек находящиесу ВНУТРИ фигуры shapeA ?

Link to comment
Share on other sites

19 answers to this question

Recommended Posts

  • 0

Здравсвуйте.

А как мне получить КООРДИНАТЫ ЛЮБЫХ 5 точек находящиесу ВНУТРИ фигуры shapeA ?

Raphael.parsePathString(pathString)

Когда вы уже научитесь читать официальную документацию....

Link to comment
Share on other sites

  • 0

Здравсвуйте.

А как мне получить КООРДИНАТЫ ЛЮБЫХ 5 точек находящиесу ВНУТРИ фигуры shapeA ?

Raphael.parsePathString(pathString)

Когда вы уже научитесь читать официальную документацию....

Я пробовал этот метод, но не понял, как с ним работать, пишу

var coords = Raphael.parsePathString(shapeA)

в консоли появляется

[["R"]]

подскажите пожалуйста, что я не так делаю?

Извините, но вы уверенны, что данный метод ищет координаты именно ВНУТРИ любой фигуры, а не на ее контуре? Ведь такой же способ можно сделать с помощью getPointAtLength, как я описал выше?

Проблема в том, что мне нужно именно ВНУТРИ любой фигуру... :(

Edited by DarkKnight
Link to comment
Share on other sites

  • 0

Raphael.parsePathString(pathString)

Я пробовал этот метод, но не понял, как с ним работать, пишу

var coords = Raphael.parsePathString(shapeA)

Читая документацию можно легко понять, что на вход этому методу нужно передавать некую pathString, а не Element.

Человек старался, писал доку, а вы ее через меня читаете...

Link to comment
Share on other sites

  • 0

Raphael.parsePathString(pathString)

Я пробовал этот метод, но не понял, как с ним работать, пишу

var coords = Raphael.parsePathString(shapeA)

Читая документацию можно легко понять, что на вход этому методу нужно передавать некую pathString, а не Element.

Человек старался, писал доку, а вы ее через меня читаете...

Если бы я понял документацию, то не задавал бы глупых вопросов.

Если пищу не элемент, то выдается ошибка

var coords = Raphael.parsePathString(300, 300, 300)

или

var coords = Raphael.parsePathString("300, 300, 300")

Вы можете поподробней объяснить, как мне получить точки внутри фигуры?

Link to comment
Share on other sites

  • 0

var coords = Raphael.parsePathString(300, 300, 300)

Похоже, нужно и по JS доки почитать.

Вместо одного параметра вы передали три, и каждый из них не строки

Вы можете поподробней объяснить, как мне получить точки внутри фигуры?

Подробнее, это написать за вас код.

var coords = Raphael.parsePathString("M 300 10 L 400 10 L 600 500 L 500 500 L 400 300 L 350 300 L 250 500 L 150 500 Z")

Link to comment
Share on other sites

  • 0

var coords = Raphael.parsePathString("M 300 10 L 400 10 L 600 500 L 500 500 L 400 300 L 350 300 L 250 500 L 150 500 Z")

Ваш вариант дает мне координаты контура фигуры, а я писал, что мне нужны ЛЮБЫЕ 5 КООРДИНАТ ТОЧЕК, КОТОРЫЕ НАХОДЯТСЯ ВНУТРИ ФИГУРЫ.

Edited by DarkKnight
Link to comment
Share on other sites

  • 0

Ваш вариант дает мне координаты контура фигуры, а я писал, что мне нужны ЛЮБЫЕ 5 КООРДИНАТ ТОЧЕК, КОТОРЫЕ НАХОДЯТСЯ ВНУТРИ ФИГУРЫ.

Ну елки-палки.

Находишь углы многоугольника, среди них находишь точки Xmin, Xmax, Ymin, Ymax.

Потом в цикле случайным образом генерируешь точки внутри XminYmin..XmaxYmax и проверяешь совпадение с искомой фигурой при помощи getElementByPoint

Если совпало, добавляешь в массив. Если длина массива равняется 5, выходишь из цикла.

Все

Link to comment
Share on other sites

  • 0

Ваш вариант дает мне координаты контура фигуры, а я писал, что мне нужны ЛЮБЫЕ 5 КООРДИНАТ ТОЧЕК, КОТОРЫЕ НАХОДЯТСЯ ВНУТРИ ФИГУРЫ.

Ну елки-палки.

Находишь углы многоугольника, среди них находишь точки Xmin, Xmax, Ymin, Ymax.

Потом в цикле случайным образом генерируешь точки внутри XminYmin..XmaxYmax и проверяешь совпадение с искомой фигурой при помощи getElementByPoint

Если совпало, добавляешь в массив. Если длина массива равняется 5, выходишь из цикла.

Все

Уже сделал :)

Спасибо огромное, о гуру :)

Link to comment
Share on other sites

  • 0

Уже сделал :)

Спасибо огромное, о гуру :)

Молодчина! Ведь можешь когда хочешь!

:)

Может вы знаете, я ищу метод, который проверяет соприкасаются фигуры или нет, есть такой метод или свойство в данной библиотеки?

Link to comment
Share on other sites

  • 0

Может вы знаете, я ищу метод, который проверяет соприкасаются фигуры или нет, есть такой метод или свойство в данной библиотеки?

В документации ничего нет.

Ключевые слова intersect, collision

Link to comment
Share on other sites

  • 0

Может вы знаете, я ищу метод, который проверяет соприкасаются фигуры или нет, есть такой метод или свойство в данной библиотеки?

В документации ничего нет.

Ключевые слова intersect, collision

а каким образом можно проверить подобное, не подскажите ?

Link to comment
Share on other sites

  • 0

а каким образом можно проверить подобное, не подскажите ?

Он тебе не понравится. Куча математики, матрицы, шматрицы, производные...

А я одним глазком гляну :)

у вас ссылочки нет случайно ?

Link to comment
Share on other sites

  • 0

Обнаружил проблему, вот постмотрите пожалуйста:

Изображение

Пролема в том, что я не могу вычеслить конкретные координаты фигуры, так как браузер воспринимает фигуру, как прямоугольник и вывобидт не точные ее координаты :(

Подскажите пожалуйста, как быть в таком случае?

Link to comment
Share on other sites

  • 0

Подскажите пожалуйста, как быть в таком случае?

Ты же строил фигуру по конкретным координатам. Извлеки из путя координаты и работай с ними.

Вы имеете в виду: сделать проверку, не выходит ли новая фигура за пределы координат ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy