Это крошечная картинка.Увеличьте его, а затем загрузите в инструмент для рисования кривых Безье.Вы знаете три фиксированные координаты (две координаты на окружности и кончик) и знаете общие касательные, по которым ваши контрольные точки должны быть:
ВыТакже известно, что контрольные точки и точки на кривой должны образовывать прямоугольник, который окружает фактическую кривую (например, кривая не может выходить за пределы этого прямоугольника) как свойство кривых Безье.
Так что теперь: вы играетевокруг в поиске правильных точек.Вы можете использовать что-то вроде Inkscape, Photoshop или Illustrator, чтобы увидеть, какая кривая выглядит достаточно хорошо, а затем скопировать координаты в свою собственную программу или просто нарисовать ее на сетке и найти грубые координаты, просто взглянув на свою сетку.а затем поиграйте со значениями, близкими к тому, что вы думаете.
А затем, когда у вас будут отсутствующие контрольные точки, вы будете рисовать их при обработке в виде фигуры:
void draw() {
// draw the inner circle with a "fat" stroke
strokeWeight(20);
// assuming center mode
ellipse(width/2, height/2, 100, 100);
// reset that stroke fatness
strokeWeight(1);
// make sure we'll be rotating about the center of the sketch
translate(width/2, height/2);
// and then start drawing eight 'teeth'
for (int i=0; i<8; i++) {
beginShape();
// we know where p1, p2, and p3 are.
vertex(p1.x, p1.y);
// and we "guessed" at c1, c2, c3, and c4.
bezierVertex(c1.x, c1.y, c2.y, c2.y, p2.x, p2.y);
bezierVertex(c3.x, c3.y, c4.y, c4.y, p3.x, p3.y);
// We leave the shape "open" in case you want both stroke and fill
endShape();
// we're drawing eight teeth, so we need to rotate by 2*PI/8 each time
rotate(0.25 * PI);
}
}