Я изучал фракталы и решил попробовать, но тут же столкнулся с гораздо более простой проблемой. Я не могу нарисовать линию под любым углом, кроме 0, 45, 90, ... и т. Д.Java: Как бы я нарисовал линию под углом, отличным от 45 градусов или нулевым градусом и т. Д.?
Проблема: Мой угол - это целое число, и я использую Math.toRadians (угол) для вычисления сам угол как его нарисованный. Когда я рисую линию, мне нужно сбрасывать (int) в double, полученный из Math.toRadians(), что заставляет меня терять сам угол, и я считаю, что это мешает линии рисовать.
код я использую: `
Graphics2D g2d = (Graphics2D) g;
int angle = 90;
int startX = getWidth()/2;
int startY = getHeight()/2;
int length = 100;
int endX = startX + (int)Math.cos(Math.toRadians(angle)) * length;
int endY = startY + (int)Math.sin(Math.toRadians(angle)) * length;
g2d.drawLine(startX, startY, endX, endY);
`
Решение:
Graphics2D g2d = (Graphics2D) g;
int angle = 91;
int startX = getWidth()/2;
int startY = getHeight()/2;
int length = 100;
int endX = startX + (int)(Math.cos(Math.toRadians(angle)) * length);
int endY = startY + (int)(Math.sin(Math.toRadians(angle)) * length);
g2d.drawLine(startX, startY, endX, endY);
Спасибо, ребята!
Вы должны использовать 'int' * после * умножения на' length'. – ruakh
^--- '(int) (Math.cos (Math.toRadians (angle)) * length)' – MadProgrammer
Синус и косинус являются действительными числами, частями в диапазоне [-1,1], определяющими угол. Сохраняйте их точность при любых вычислениях до последнего момента, если вам нужно приложить к целому числу. – laune