Jump to content
pikax

Desenhar meia circunferência

Recommended Posts

pikax

Estou a precisar de uma função que faça meia circunferência, só consigui lembrar-me como fazer 1 circunferência mas não estou a conseguir fazer meia 😡

tenho que desenhar meia circunferência no cartesiano:

função matemática para uma circunferência:

x=coseno(n/PI)*raio;
y=seno(n/PI)*raio;

D3DXVECTOR3(cos(float(i/PI))*raio,sin(float(i/PI))*raio,0.0f);
//ou

int x=cos(float(i/PI))*raio;
int y=sin(float(i/PI))*raio;

Já não me lembro como fazer isto  :wallbash:


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
RSFalcon7

Ora se tens

x=cos(angulo)*raio;
y=sen(angulo)*raio;

só precisas restringir o para um intervalo de 180º ou, como estas a trabalhar com radianos, para PI.

Share this post


Link to post
Share on other sites
thoga31

Equação da circunferência: x2 + y2 = r2

Logo, a circunferência é: y = +-sqrt(r2 - x2)

A metade superior é a +, e a inferior é a -.

Espero ter ajudado.

Cumpz. :cheesygrin:


Knowledge is free!

Share this post


Link to post
Share on other sites
pikax

Obrigado pela a ajuda, já resolvi o meu problema.

O meu erro estava no código para gerar os pontos, no ciclo começava no 1 em vez de 0.

//esta maneira resolveu-me o meu problema
sz=TAM;
for(int i=1;i<sz;i++)
{
	float t = (float(i-1)/((sz-2)/PI));
	vertex[i].pos=D3DXVECTOR3(cos(t)*raio,sin(t)*raio,0.0f);

	vertex[i].color=WHITE;
}

Equação da circunferência: x2 + y2 = r2

Logo, a circunferência é: y = +-sqrt(r2 - x2)

A metade superior é a +, e a inferior é a -.

Espero ter ajudado.

Cumpz. :cheesygrin:

Isso é mais para calcular a distancia do ponto acho eu.

mas o que eu estava a precisar era criar os pontos, a formula é a que o RSFalcon7 deu:

Ora se tens

x=cos(angulo)*raio;
y=sen(angulo)*raio;

só precisas restringir o para um intervalo de 180º ou, como estas a trabalhar com radianos, para PI.

O erro foi meu porque nem pensei que tinha que começar em 0.

Obrigado pela a ajuda


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
thoga31

Equação da circunferência: x2 + y2 = r2

Logo, a circunferência é: y = +-sqrt(r2 - x2)

A metade superior é a +, e a inferior é a -.

Espero ter ajudado.

Cumpz. :cheesygrin:

Isso é mais para calcular a distancia do ponto acho eu.

O que é uma circunferência? Um conjunto de pontos equidistantes a um mesmo ponto, senda esta distância denominada de raio. :D

Por isso a tua ideia não está errada em essência.

O método a que recorreste é baseado no círculo trigonométrico, ou seja, a forma geral sen2(x) + cos2(x) = 1. :)


Knowledge is free!

Share this post


Link to post
Share on other sites
pikax

numa circunferência tos os pontos da extremidade tem a mesma distancia ao ponto de origem(raio).

não estou a dizer que estás errado ou algo do género, só tou a dizer que não era isso a minha dúvida, a minha duvida era saber que posição estava determinado ponto ou seja sabendo que cada ponto está separado por X ângulo saber o x e o y.

o x é dado pela função cos(o)*raio; cosseno de tetha (acho eu que é assim que se chama)

o y é dado pela função sen(o)*raio; seno de tetha (acho eu que é assim que se chama)

estás duas funções:

Equação da circunferência: x2 + y2 = r2

Logo, a circunferência é: y = +-sqrt(r2 - x2)

são as mesmas funções para saber a distancia de um determinado ponto a outro ponto


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
thoga31

Sim, se o problema envolve directamente ângulos, então a solução com o seno e o co-seno é a melhor (e única). :cheesygrin:

Se fosse só para desenhar meia-circunferência sem mais nada, e esta fosse nos intervalos ]-180º, 0º[ e ]0º, 180º[, as equações que te tinha dado funcionariam na perfeição: para cada x, era dado o respectivo y. ;)


Knowledge is free!

Share this post


Link to post
Share on other sites
pedrosorio

o x é dado pela função cos(o)*raio; cosseno de tetha (acho eu que é assim que se chama)

o y é dado pela função sen(o)*raio; seno de tetha (acho eu que é assim que se chama)

Em português teta, em inglês theta.


Não respondo a dúvidas por mensagem.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.