Ponta da seta

Olá pessoal estou com uma dificuldade em fazer a ponta da seta, pensei em fazer duas retas, porem não tive ideia de como faze-la, uma vez que a seta pode estar na horizontal, vertical ou inclinada, minha ideia é fazer uma seta igual da imagem. .
O código que fiz até agora é o seguinte (ele desenha a reta mas não a ponta da seta):

public final void desenharAresta(Graphics desenho)
{
dashed = new BasicStroke(1.0f,
BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER,
10.0f, dash1, 0.0f);
Graphics2D g2 = (Graphics2D) desenho;
BasicStroke s =(BasicStroke) g2.getStroke();
g2.setStroke(dashed);

	int i,
		pontoXInicial,
		pontoYInicial,
		pontoXFinal,
		pontoYFinal;

	desenho.setColor(corAresta);
	
	//Define o ponto inicial da aresta (O centro da do verticeOrigem)
	pontoXInicial = getVerticeOrigem().getX() + getVerticeOrigem().getLargura()/2;
	pontoYInicial = getVerticeOrigem().getY() + getVerticeOrigem().getAltura()/2;
	
	//Define o ponto final (sem quebra) ou segundo ponto (com quebra) da aresta...
	if (getNumeroQuebras() > 0)
	{
		//(com quebra)
		pontoXFinal = getCoordenadaQuebraX(0);
		pontoYFinal = getCoordenadaQuebraY(0);
	}
	else
	{
		//(sem quebra)
		pontoXFinal = getVerticeDestino().getX() + getVerticeDestino().getLargura()/2;
		pontoYFinal = getVerticeDestino().getY() + getVerticeDestino().getAltura()/2;
	}

  
	desenho.drawLine(pontoXInicial, pontoYInicial, pontoXFinal, pontoYFinal);

// desenho.drawLine(pontoXFinal-60, pontoYFinal-60, pontoXFinal-30, pontoYFinal-20);
// desenho.drawLine(pontoXFinal-60, pontoYFinal+60, pontoXFinal-30, pontoYFinal-20);

	//Desenha a aresta com todas as quebras existentes at� o ponto final(verticeDestino)...
	for (i = 1; i <= getNumeroQuebras(); i++)
	{
		pontoXInicial = pontoXFinal;
		pontoYInicial = pontoYFinal;
		
		if (i == getNumeroQuebras())
		{
			pontoXFinal = getVerticeDestino().getX() + getVerticeDestino().getLargura()/2;
			pontoYFinal = getVerticeDestino().getY() + getVerticeDestino().getAltura()/2;
		}
		else
		{
			pontoXFinal = getCoordenadaQuebraX(i);
			pontoYFinal = getCoordenadaQuebraY(i);
		}
		
		desenho.drawLine(pontoXInicial, pontoYInicial, pontoXFinal, pontoYFinal);

                    
	}
            g2.setStroke(s);

}

Obrigado desde já se alguém puder me ajudar.

Seu problema não é de Java e sim de geometria analítica. Você precisa determinar os vértices de um triângulo isósceles (ou equilátero), sendo que um deles coincide com o segmento de reta que você já tem.
Note que se você for usar um triângulo equilátero, o ângulo que os lados da seta fazem com o segmento de reta (x0, y0) - (x1, y1) é de 30 graus, o que facilita um pouco a parte de determinar quais são os pontos (x2, y2) e (x3, y3).

http://deepliquid.com/blog/archives/98 indica como fazer as contas para achar as coordenadas da ponta da seta.