Мне нужна помощь, чтобы нарисовать многоугольник

#java

#java

Вопрос:

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

Я хочу нарисовать полигон, используя Java.awt.polygon

 
TMP = new Polygon();

// this.getX() and this.getY() return an int
// consider getX() and getY() as x0 and y0

int x1,x2,x3,x4;
int y1,y2,y3,y4;

x1 = (int)  Math.round(this.getX() - this.getLength() * Math.cos(this.getAngle()));
y1 = (int)  Math.round(this.getY() - this.getLength() * Math.sin(this.getAngle()));

x3 = (int)  Math.round(x1 - this.getWidth() * Math.cos((Math.PI / 2) - this.getAngle()));
y3 = (int)  Math.round(y1   this.getWidth() * Math.sin((Math.PI/2) - this.getAngle()));

x4 = (int)  Math.round(this.getX() - this.getWidth() * Math.cos((Math.PI/2) - this.getAngle()));
y4 = (int)  Math.round(this.getX()   this.getWidth() * Math.sin((Math.PI/2) - this.getAngle()));

x2 = (int)  Math.round((x1   x3) / 2   Math.cos(this.getAngle()) * this.getLength() / 2);
y2 = (int)  Math.round((y1   y3) / 2   Math.sin(this.getAngle()) * this.getLength() / 2);

TMP.addPoint(this.getX(), this.getY());
TMP.addPoint(x1, y1);
TMP.addPoint(x2, y2);
TMP.addPoint(x3, y3);
TMP.addPoint(x4, y4);
this.setPolygon(TMP);

 

Это то, чего я ожидаю
https://i.gyazo.com/bdd8510d0128bab6347bb6c110f03c92.png

И я получаю это https://i.gyazo.com/55a00ae07d4f31732db12805fa592aec.png

Комментарии:

1. Я не слишком внимательно изучал ваши формулы, но, безусловно, самая запутанная вещь в начале рисования вручную заключается в том, что в awt / Swing система координации отличается от той, что у вас есть в математике: ее начало находится в верхнем левом углу (а не в нижнем левом углу), а выше yзначения означают «вниз» (а не «вверх»).

Ответ №1:

Мои формулы были правильными. Мои значения длины и ширины были неверными. Моя ширина была моей длиной, а моя длина была моей шириной. Извините!