У меня возникли проблемы с созданием остроты (чтобы превратить круг, созданный с помощью полигона в звезду). В основном я хочу добавить точки из круга, чтобы превратить его в звезду. Это задание для курса. Я не знаю, как создать код для остроты.Java: Создание звезды из круга Созданный многоугольник
Примечания:
Параметр spikiness может находиться в диапазоне от 0,0 до 1,0 с 0,0 составляет не Spikey (как футбольный мяч) и 1,0 будучи чрезвычайно Spikey (как морского ежа).
Параметр spikiness определяет радиус внутренней окружности, используя формулу: innerRadius = радиус * (1,0 - spikiness) (пример формулу я пытался реализации, но без успеха)
Я бы оцените помощь!
Мой код:
import java.awt.*;
public class StarSampler {
public static void main(String[] args)
{
DrawingPanel panel = new DrawingPanel(500, 500);
Graphics2D g = panel.getGraphics();
g.setColor(Color.BLUE);
fillStar(g, 250, 250, 100, 36, 1); // The (1) is for extreme spikeness
}
public static void fillStar(Graphics2D g, int ctrX, int ctrY, int radius, int nPoints, double spikiness)
{
double xDouble[] = new double[nPoints];
double yDouble[] = new double [nPoints];
int xPoint[] = new int[nPoints];
int yPoint[]= new int[nPoints];
int angle = 0;
for (int i = 0; i < nPoints; i++) // Continue through use of Prog6 formula
{
xDouble[i] = ctrX + radius * Math.cos(Math.toRadians(angle));
yDouble[i] = ctrY + radius * Math.sin(Math.toRadians(angle));
angle += 10;
}
for (int j = 0; j < nPoints; j++) // Casts for ints and doubles
{
xPoint[j] = (int) xDouble[j];
yPoint[j] = (int) yDouble[j];
}
g.fillPolygon(xPoint, yPoint, nPoints); // Creates polygon
}
}
звезда с N «точек» это просто круг с 2N точек, где точки 0, 2, 4 ... находятся в радиусе 'r' и пунктами 1 , 3, 4 ... находятся по радиусу 'spikiness * R'. Вы создаете только точки 'N' (а не' 2N'), и вы не используете 'spikiness'. –
Я знаю, что я не создаю 2N, и я не использую остроту. Могу ли я в принципе просто скопировать весь метод, а затем сделать остроту? – Aramza