2015-11-20 4 views
0

Я хочу случайным образом создавать спрайты по окружности круга, но даже после нескольких часов работы я не мог найти решения. Вот что я сделал до сих порДобавить спрайт по окружности круга

enter image description here

Я использовал эту формулу для него:

Sprite * pin = Sprite::create("pin.png"); 
pin->setPosition(Vec2((_circle->getContentSize().width/2)*(0.7/3), _circle->getContentSize().height*0.7)); 

Sprite * pin2 = Sprite::create("pin.png"); 
pin2->setPosition(Vec2((_circle->getContentSize().width/2)*(0.6/3), _circle->getContentSize().height*0.6)); 

Sprite * pin3 = Sprite::create("pin.png"); 
pin3->setPosition(Vec2((_circle->getContentSize().width/2)*(0.8/3), _circle->getContentSize().height*0.8)); 

Sprite * pin4 = Sprite::create("pin.png"); 
pin4->setPosition(Vec2((_circle->getContentSize().width/2)*(0.9/3), _circle->getContentSize().height*0.9)); 

Sprite * pin5 = Sprite::create("pin.png"); 
pin5->setPosition(Vec2((_circle->getContentSize().width/2)*(1/3), _circle->getContentSize().height)); 

_circle->addChild(pin); 
_circle->addChild(pin2); 
_circle->addChild(pin3); 
_circle->addChild(pin4); 
_circle->addChild(pin5); 

Но я хочу что-то подобное (с правильным углом, который я не мог сделать в образец изображения)

enter image description here

Пожалуйста, предложить некоторые точные решения для него. Спасибо за ваше время!

ответ

1

Основные триггеры - sin и cos - ваши друзья.

Пример:

const float circle_x = ...; 
const float circle_y = ...; 
const float circle_radius = ...; 
const float angle = ...; 
const float x = cos(angle)*circle_radius + circle_x; 
const float y = sin(angle)*circle_radius + circle_y; 

// Draw stuff at (x, y). 
+0

Спасибо! Это сработало отлично для меня :) – Itkrux

1

Во-первых, это «окружность» не «обстоятельство» (что поможет с поиском)

Во-вторых, вы используете размер изображения, а не круг внутри изображения.

В-третьих, для решения вам потребуется использовать основную тригонометрию. Определение точек на круге требует использования функций sin и cos. После того, как вы найдете центр круга и его радиус, их следует легко вычислить лишь небольшим количеством исследований.

Смежные вопросы