Figura achatada

Figura achatada

by Renata Brunelli -
Number of replies: 7

Minha figura a partir da ordem cinco tá bonitinha (o começo e o fim da linha do desenho se encontram e tal...), mas tá meio achatado!! O floco de neve tá meio "alto e magro"... e a partir de ordem 6 ele não faz nada!! Q q eu faço?

Obrigada!

In reply to Renata Brunelli

Re: Figura achatada

by Vanessa Sabino -
Quanto a estar achatada, pode ser problema de precisão nas contas. Utilize float (ou double) ao invés de int quando for fazer contas com números não inteiros. Basta passar para int na função DesenhaSegmento.
E sobre não fazer nada quando aumenta a ordem, pode ser problema de resolução. Verifique se aumentando o tamanho da imagem funciona.
In reply to Renata Brunelli

Re: Figura achatada

by Marcel Toniolo -

O meu jah fica baixo e gordinho

Eu tb nao to conseguindo garantir que a figura fique dentro da area estabelecida e to sem ideias para currigir estes problemas

In reply to Marcel Toniolo

Re: Figura achatada

by Marcelo Gimenez -
Quanto a estar achatata: experimente garantir que o comprimento do menor seguimento que servirá como peça para montar a curva seja pelo menos igual a 3.
In reply to Renata Brunelli

Re: Figura achatada

by João Francisco Amorim Enomoto -
Eu li várias respostas quanto a esse problema (que eu acredito ser o principal do programa de todos). Algo que eu achei curioso e lógico, é que dependendo do grau da recursão ele provavelmente desenha um segmento muito pequeno (tamanho 0 ou 1) e isso acaba fazendo com que a maior parte das linhas não seja desenhada. Portanto, seguindo o conselho do post acima, acho que seria bom vocês verificarem se o segmento a ser desenhado é de tamanho válido (>= 3 acho um bom tamanho base). Caso contrário, ele vai tentar desenhar algo seguindo a recursão e ou nada vai acontecer ou as figuras vão ficar meio achatadas, ou finas, depende da lógica que cada um usou para montar a figura.

Abraços!
In reply to Renata Brunelli

Re: Figura achatada

by Claudio Freitas -
Eu creio que o problema seja os INTs mesmo, como a Vanessa falou.
Isso ocorre pois usando valores inteiros numa função recursiva, estamos calculando iterações cada vez mais "pobres" em relação ao valor "verdadeiro".

Imaginem uma função f(x) = 2,5*x*(1 - x^2)
f1:   f(0,700000000)    = 0,8925
f2:   f(f(0,7))         = 0,453933867
f3:   f(...)            = 0,900995225
f10:                    = 0,948294617
f30:                    = 0,881887442
f50:                    = 0,688576274


f1:   f(0,700000001)    = 0,892499998
f2:   f(...)            = 0,453933871
f3:                     = 0,900995229
f10:                    = 0,948294453
f30:                    = 0,882549496
f50:                    = 0,199407663

Acho que é mais ou menos o que acontece no EP: a cada iterada, o valor é um pouquinho diferente, mas após um certo número N de iteradas, a precisão fica pobre.

Por isso que usando float é melhor, pois ele vai truncar só quando for imprimir na tela, o que causa uma perda muito pequena de precisão, pois ele trunca uma vez só e só no final dos cálculos. Ele não utiliza o valor truncado para iterar mais.

Espero que seja isso, se eu disse alguma coisa errada, alguém me corrija.

Fonte interessante: http://www.geocities.com/inthechaos/num.htm
In reply to Claudio Freitas

Re: Figura achatada

by João Francisco Amorim Enomoto -
Acredito que possa ser isso também Cláudio, ainda mais porque cada conta feita com um inteiro "arredondado" gera uma certa taxa de erro, que vai se propagando conforme aumentam os cálculos. Mas também não descarto a possibilidade da tentativa de criar retas com tamanho 0 (ou seja, não se cria nada). Isso justifica o fato de alguns programas não gerarem figura alguma para ordens muito grandes.

Abraços!
In reply to João Francisco Amorim Enomoto

Re: Figura achatada

by Claudio Freitas -
Sim, também acho isso. Essa é uma outra possibilidade. Uma coisa não exclui a outra.

Legal te ver novamente de monitor. =)

Abraços!