import java.lang.Math;
import java.awt.*
public class Triangle implements Shape
{
java.awt.Point a;
java.awt.Point b;
java.awt.Point c;
public Triangle(java.awt.Point a, java.awt.Point b, java.awt.Point c)
{
this.a = a;
this.b = b;
this.c = c;
}
public double getArea()
{
double area;
return area = Math.abs((a-c)*(b-a)-(a-b)*(c-a));
} ...
http://upload.wikimedia.org/math/f/e/5/fe56529cdaaaa9bb2f71c1ad8a1a454f.png < --area формулыJava: вычисления площади треугольника
Я пытаюсь вычислить площадь треугольника из 3-х точек (х, у) из 2D декартовой системы координат. Я предполагаю, что моя приведенная выше формула правильно дает область треугольника (если нет, пожалуйста, исправьте меня), но мой компилятор говорит, что «оператор - нельзя применить к java.awt.Point, java.awt.Point». Я предполагаю, что это говорит об этом, потому что вы не можете вычитать точки друг от друга, но каждое значение в формуле является либо значением x, либо y, а не точкой. Как я могу исправить свой код, чтобы это сработало? Спасибо!
Спасибо большое за исчерпывающий ответ, Адам. Сегодня я чему-то научился! – dukevin
Я полностью согласен с использованием геттеров и сеттеров: это хорошая практика в целом, это просто исключение. Используемый класс 'Point' является частью AWT, Abstract Window Toolkit, предназначенного для рисования графики на экране, где критическое значение времени отклика. Таким образом, поскольку доступ к переменной происходит быстрее, чем вызов метода, внутренние поля отображаются во многих классах AWT. Все, что сказал @ adam-matan, совершенно правильно, просто хотел указать, почему 'java.awt.Point' не является математической точкой и почему это происходит. –
Спасибо! Хорошо знать. –