Matemática pura, física, química, etc.: tarefas de treinamento do cérebro que nada têm a ver com o comércio [Parte 2] - página 20

 

Em coordenadas polares, tudo estará bem lá. Mas quando você muda para as coordenadas normais, a mesma coisa sairá.

Qual é a resposta curta? Você tem que dançar do fogão. Se avaliar a área de valores, então a redução para esta forma não é necessária.

_____________

A propósito, não é difícil obter os coeficientes da equação.

E mais uma coisa a propósito - a elipse original antes da rotação também não é expressa por tal função.

 
TheXpert:

Em coordenadas polares, tudo estará bem lá. Mas quando você muda para as coordenadas normais, a mesma coisa sairá.

Qual é a resposta curta? Você tem que dançar do fogão. Se avaliar a área de valores, então a redução para esta forma não é necessária.

_____________

A propósito, não é difícil obter os coeficientes da equação.

E mais uma coisa a propósito - a elipse original antes da rotação também não é expressa por tal função.


A tarefa é desenhar uma elipse girada pixel a pixel. Não é uma elipse, mas um círculo achatado também é bom.
 

Uma elipse e um círculo achatado são a mesma coisa.

Portanto, há uma equação -- x^2/a^2 + y^2/b^2 = 1 -- que é uma elipse. (1)

Além disso, há uma transformação. Expressar x y por x' y' não é problema. A substituição em (1) também não é um problema.

Em seguida, fazemos loop over x em incrementos de 1 e loop over y em incrementos de 1.

E então medimos estes pontos, e é um pouco fácil.

O único problema é a área dos valores. É aqui que você tem que pensar sobre isso.

 
TheXpert:

Uma elipse e um círculo achatado são a mesma coisa.

Portanto, há uma equação -- x^2/a^2 + y^2/b^2 = 1 -- que é uma elipse. (1)

Além disso, há uma transformação. Expressar x y por x' y' não é problema. A substituição em (1) também não é um problema.

Em seguida, fazemos loop over x em incrementos de 1 e loop over y em incrementos de 1.

Então você mede o ponto por ele, não é tão difícil.

O único problema -- a faixa de valores. É aqui que você tem que pensar sobre isso.



Se um círculo achatado e uma elipse são o mesmo, então y=k*sqr(r^2-x^2) é uma elipse.

Se você obtém y a partir de x e girá-lo, você obtém cantos de pixel (por exemplo pixel, pixel inferior e pixel direito). Qualquer peneirar os pixels e conectar os pontos resultantes com uma linha parecerá torto. Experimentei um monte de maneiras. A única maneira agradável é a função y' de x', se os pontos estiverem mais distantes do que um pixel, então conecte-os com uma linha.

 
Em resumo, eu provavelmente calcularia os pontos no sistema polar e depois removeria os pontos extras de acordo com o princípio das 8 ligações.
 
TheXpert:
Em resumo, eu provavelmente calcularia os pontos no sistema polar e depois removeria os pontos extras de acordo com o princípio das 8 ligações.

Vou tentar.
 
Integer:


Se o círculo achatado e a elipse são o mesmo, então y=k*sqr(r^2-x^2) é uma elipse.

Se você obtiver y de x e girar, haverá cantos de pixels (por exemplo, pixel, pixel inferior e pixel direito). Qualquer peneirar os pixels e conectar os pontos resultantes com uma linha parecerá torto. Experimentei um monte de maneiras. A única maneira agradável é em função de y' de x', se os pontos estiverem mais distantes que um pixel, então conecte-os com uma linha.


Você precisa desenhá-la apenas em uma cor, ou você pode antisserrilhá-la? Se suavizar, você pode procurar por uma implementação pronta do algoritmo de Bresenham para elipse

P.S. Aqui está outra coisa que encontrei http://www.geometrictools.com/Documentation/IntegerBasedEllipseDrawing.pdf

 
Avals:


Preciso fazê-lo apenas em uma cor, ou posso fazê-lo em um raster antialiased? Se suavizar, você pode procurar por uma implementação pronta do algoritmo de Bresenham para a elipse

P.S. Aqui está mais de http://www.geometrictools.com/Documentation/IntegerBasedEllipseDrawing.pdf


Em uma cor, se com o anti-aliasing, você precisará fazer tudo com o anti-aliasing.


* * *

Acho que a elipse não será até a próxima temporada :)

Algo surgiu, é claro. Eu realmente não me lembrei, eu vi como Renat desenhou um círculo. Verifique toda a área, se o ponto está dentro ou fora da figura. Em seguida, chegar à figura pronta de quatro lados e colorir o contorno. Há outra desvantagem com este caso - se não for uma elipse girada, é necessário calcular e refletir por um quarto. Se for uma elipse girada, você tem que calcular para metade dela e refleti-la. Também quero fazer um entalhe para desenhar setores e fatias.

 

Integer:

Se girado, calcular pela metade e refletir. Também quero fazer um entalhe para desenhar setores, fatias...

Especialmente as coordenadas polares!
 
TheXpert:
Especialmente as coordenadas polares!


Em parte, mas não totalmente. Em uma área quadrada para cada x e y, primeiro giramos, transformamos o x e y girado em coordenadas polares - obtemos a distância do ponto a partir do centro (r) e ângulo (fi), pelo ângulo fi, dado raio e coeficiente calculamos a distância do ponto extremo da elipse a partir do centro, comparamos com r e descobrimos se o ponto está dentro ou não.

Em qualquer caso, você precisará dividi-la em quartos ou metades e refletir.

Se você desenhar em coordenadas polares imediatamente, você tem que limpar alguns pontos mais tarde, e se você desenhar sólido, é mais fácil contorná-lo mais tarde. Talvez não seja assim, mas obviamente há mais complicações do que parece.