Triângulo D3D

Posts 1–15 of 19 · Page 1 of 2
Triângulo D3D
Olá terráqueos, venho aqui em missão de paz, disponibilizando um código D3D para desenho de triângulos.

Código:

Code:
struct sVertex
{
	FLOAT x, y, z, rhw;
	DWORD dwColor;
};

VOID DrawTriangle(INT x1, INT y1, INT x2, INT y2, INT x3, INT y3, DWORD Color1, DWORD Color2, DWORD Color3, LPDIRECT3DDEVICE9 pDevice)
{
	CONST DWORD dwFVF = D3DFVF_XYZRHW | D3DFVF_DIFFUSE;
	sVertex V[3] = 
	{
		{(FLOAT)x1, (FLOAT)y1, 0.5f, 1.0f, Color1},
		{(FLOAT)x3, (FLOAT)y3, 0.5f, 1.0f, Color3},
		{(FLOAT)x2, (FLOAT)y2, 0.5f, 1.0f, Color2},
	};
	
	VOID *pVertexBuffer = NULL;
	LPDIRECT3DVERTEXBUFFER9 pBuffer = NULL;

	if(FAILED(pDevice->CreateVertexBuffer(3 * sizeof(sVertex), 0, dwFVF, D3DPOOL_DEFAULT, &pBuffer, NULL)))
		return;

	if(FAILED(pBuffer->Lock(0, sizeof(V), &pVertexBuffer, 0)))
		return;
	
	memcpy(pVertexBuffer, V, sizeof(V));
	pBuffer->Unlock();

	pDevice->SetFVF(dwFVF);
	pDevice->SetStreamSource(0, pBuffer, 0, sizeof(sVertex));
	pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
}
Para isso supõe-se que você ao menos saiba coisas básicas de um triângulo:

Code:
• O que é um triângulo?
R: Um polígono com 3 lados e 3 vértices, portanto a função conta com as coordenadas de cada um dos 3 vértices que são dispostos dessa maneira


Code:
A(x1, y1) = Ponto do vértice 1
B(x2, y2) = Ponto do vértice 2
C(x3, y3) = Ponto do vértice 3
Code:
Color1 = Cor do vértice 1
Color2 = Cor do vértice 2
Color3 = Cor do vértice 3
Se você deseja construir um triângulo equilátero a partir desse código, usei uma fórmula de acordo com os princípios da geometria plana básica:

Code:
Lado = L
Altura do Triângulo = ((L * (3 ^(1 / 2))) / 2)
Atribuindo à origem do plano do triângulo valores arbitrários como menuX e menuY temos:

Code:
A(menuX + (L / 2), menuY)
B(menuX, menuY + (L * 0.86f))
C(menuX + L, menuY + (L * 0.86f))
• Nota: 0,86 é a aproximação de ((3 ^ (1 / 2)) / 2)

Sendo(exemplo) menuX = 20, menuY = 25, L = 50 e o triângulo monocromático de cor vermelha:

Code:
A(20 + 25, 25)
B(20, 25 + 43)
C(70, 25 + 43)
Utilizamos em seu local de desenho(Present ou Multi-Byte to Wide Char):
Code:
DrawTriangle(45, 25, 20, 68, 70, 68, D3DCOLOR_ARGB(255, 255, 000, 000), D3DCOLOR_ARGB(255, 255, 000, 000), D3DCOLOR_ARGB(255, 255, 000, 000), pDevice);
• Nota 2: Estas medidas são todas em pixels

Resultando assim em algo desse tipo:


• Nota 3: O triângulo tricromático faz parte do programa de simulação

Créditos:
• DirectXTutorial
• Matypatty
• Chaos Magician
• AeroMan
• Meu professor de matemática
EzfCUZn.png84 KB · 4 downloads
Como sempre você estar sempre trazendo muitas novidades parabêns pelo seu excelente trabalho @ChaosMagician
Esse representa!
Quote Originally Posted by ParkII View Post
Esse representa!
Aff maldito você eim --'
MPGH Toda bugada ...
Quote Originally Posted by pDevice View Post
MPGH Toda bugada ...
a culpa é de um carinha que não posso falar quem é que anda zuando a mpgh --'
Quote Originally Posted by experthack View Post
A Culpa É De Um Carinha Que Não Posso Falar Quem É Que Anda Zuando A Mpgh --'
Eu juro que não fiz nada...entrei em duas prefeituras essa semana...mais nada !!!
Quote Originally Posted by Megaloco View Post
Eu juro que não fiz nada...entrei em duas prefeituras essa semana...mais nada !!!
é não foi vc , mau sabe tira dc das strings (acho que nem isso), imagina ataca a mpgh
Quote Originally Posted by Coder.Anonymous View Post
é não foi vc , mau sabe tira dc das strings (acho que nem isso), imagina ataca a mpgh
Atacar é mais facil que remover DC da string kkk
Pega o codigo DrawCircle e muda os lados para 3, pronto, triangulo '-'
Quote Originally Posted by Coder.Anonymous View Post
é não foi vc , mau sabe tira dc das strings (acho que nem isso), imagina ataca a mpgh
Ahh tbem não é assim...minha With tá 250%...o @experthack que fica me confundindo com o @CheatJlle !!!
Quote Originally Posted by Megaloco View Post
Onde estão os modos criança mal educada...(Post Reportado)
Idai que fui reportado ?
Posts 1–15 of 19 · Page 1 of 2
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?