I wrote this Triangle class in C#, and I have a function that returns the area, but it's not returning the correct number a lot of the time. It's based on the coordinate geometry formula: area = the absolute value of Ax(By - Cy) + Bx(Cy - Ay) + Cx(Ay - By) divided by 2. Can you help me find the problem?

using System.Windows;
void Main()
{
	var t = new Triangle(new Point(0,0), new Point(0,2),new Point(2,0));
	Console.WriteLine(t.Area);//expected 2
	
	t = new Triangle(new Point(10,17), new Point(25,5),new Point(28,19));
	Console.WriteLine(t.Area);//expected 123
}

class Triangle
{
	private Point v1, v2, v3;
	
	public Triangle(Point v1, Point v2, Point v3)
	{
		this.v1 = v1;
		this.v2 = v2;
		this.v3 = v3;
	}
	
	public double Area
	{
		get
		{			
			return Math.Abs(v1.X * (v2.Y - v3.Y) + 
			v2.X * (v3.Y - v1.Y) + 
			v3.X * (v1.Y - v2.Y) / 2);
		}
	}
}

system
Eu escrevi esta classe Triangle em C#e tenho uma função que retorna a área, mas não está retornando o número correto a maior parte do tempo.É baseado na fórmula de geometria de coordenadas: área = o valor absoluto de AX (por - cy) + bx (cy - ay) + cx (ay - por) dividido por 2. Você pode me ajudar a encontrar o problema?

usando System.Windows;
void main ()
{
var t = novo triângulo (novo ponto (0,0), novo ponto (0,2), novo ponto (2,0));
Console.WriteLine (T.Area); // esperado 2

t = novo triângulo (novo ponto (10,17), novo ponto (25,5), novo ponto (28,19));
Console.WriteLine (T.Area); // Esperado 123
}

Triângulo de classe
{
Ponto privado v1, v2, v3;

Triângulo Público (Ponto V1, Ponto V2, Ponto V3)
{
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
}

área dupla pública
{
pegar
{
Retornar Math.abs (v1.x * (v2.y - v3.y) +
v2.x * (v3.y - v1.y) +
v3.x * (v1.y - v2.y) / 2);
}
}
}
user
Parece que sua divisão por 2 na fórmula da área é extraviada.De acordo com a fórmula de coordenadas que você referenciou, o valor absoluto dos três produtos somados juntos deve ser dividido por dois.Com o código atual, apenas o produto final está sendo dividido.Você pode usar isso para corrigir o problema:

área dupla pública
        {
                pegar
                {
                        Retornar Math.abs (v1.x * (v2.y - v3.y) +
                        v2.x * (v3.y - v1.y) +
                        v3.x * (v1.y - v2.y)) / 2;
                }
        }
assistant
<|system|>
</s>
<|user|>
Eu escrevi esta classe Triangle em C#e tenho uma função que retorna a área, mas não está retornando o número correto a maior parte do tempo.É baseado na fórmula de geometria de coordenadas: área = o valor absoluto de AX (por - cy) + bx (cy - ay) + cx (ay - por) dividido por 2. Você pode me ajudar a encontrar o problema?

usando System.Windows;
void main ()
{
var t = novo triângulo (novo ponto (0,0), novo ponto (0,2), novo ponto (2,0));
Console.WriteLine (T.Area); // esperado 2

t = novo triângulo (novo ponto (10,17), novo ponto (25,5), novo ponto (28,19));
Console.WriteLine (T.Area); // Esperado 123
}

Triângulo de classe
{
Ponto privado v1, v2, v3;

Triângulo Público (Ponto V1, Ponto V2, Ponto V3)
{
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
}

área dupla pública
{
pegar
{
Retornar Math.abs (v1.x * (v2.y - v3.y) +
v2.x * (v3.y - v1.y) +
v3.x * (v1.y - v2.y) / 2);
}
}
}</s>
<|assistant|>
Parece que sua divisão por 2 na fórmula da área é extraviada.De acordo com a fórmula de coordenadas que você referenciou, o valor absoluto dos três produtos somados juntos deve ser dividido por dois.Com o código atual, apenas o produto final está sendo dividido.Você pode usar isso para corrigir o problema:

área dupla pública
        {
                pegar
                {
                        Retornar Math.abs (v1.x * (v2.y - v3.y) +
                        v2.x * (v3.y - v1.y) +
                        v3.x * (v1.y - v2.y)) / 2;
                }
        }</s>
