Como posso distribuir pontos sobre uma superfície implícita, para concentrá-los mais densamente em áreas de maior curvatura?
Eu considerei adicionar pontos aleatoriamente e rejeitar pontos não necessários com base na curvatura, mas gostaria de saber se existe uma abordagem melhor que dê uma distribuição mais uniforme em áreas de curvatura semelhante, enquanto ainda fornece a maior densidade necessária em alta regiões de curvatura.
Estou procurando especificamente usar esses pontos para uma triangulação da superfície e não quero criar mais triângulos do que preciso para peças relativamente planas.
Isso será aplicado a formas com uma derivada conhecida para que a curvatura em um determinado ponto possa ser calculada.
Isso não precisa ser uma abordagem em tempo real.
fonte
Respostas:
A idéia que eu tentaria aplicar seria a seguinte: Faço o exemplo da curva, mas deve ser direta para a aplicação da superfície.
Digamos que temos uma curva uniformemente parametrizada. Digamos que o parâmetro da curva é . Seu objetivo é amostrar o ponto correspondente ao valor de modo que a curvatura seja alta.s sγ s s
Se você obtiver a magnitude da curvatura , isso também será função de . Então, se você normalizar a função, você receberá uma distribuição de probabilidade. Se você obtiver a integral dessa distribuição, terá a distribuição cumulativa. Vamos chamar essa função cumulativa .s | c | C ( s )c s | c | C( S )
O problema de amostragem de uma distribuição fornecida pela função cumulativa é bem conhecido, portanto, basicamente, depois de ter amostrado um conjunto de valores , esse valor estará relacionado aos pontos de interesse.s0 0, s1, … , Sn
A aplicação desse método ao caso da superfície deve ser reta, pois basicamente você tem uma função de distribuição cumulativa bidimensional, mas o problema de amostragem é exatamente o mesmo.
Apenas para dar alguns detalhes, é basicamente amostragem de uma distribuição, pois a função cumulativa envolve duas etapas:
pegue um valor aleatório no intervalo , digamosk[ 0 , 1 ] k
resolva a equação .C( s ) = k
Essa abordagem é exata, é claro que é cara, mas se você gosta dessa abordagem, pode trabalhar na otimização.
fonte
Um bom ponto de partida é o artigo clássico Usando partículas para amostrar e controlar superfícies implícitas , publicado em SIGGRAPH 1994.
Uma simples simulação de partículas descrita no artigo Amostrando objetos implícitos com sistemas de partículas com base física ( Computers & Graphics , 1996) para curvas também funciona para superfícies; consulte Textura dinâmica para superfícies implícitas para obter exemplos.
Para um exemplo mais recente, consulte Representação de formas e tons para superfícies implícitas ( Computers & Graphics , 2011).
fonte
A seguinte abordagem ingênua provavelmente não produzirá pontos tão bem distribuídos quanto os dados por Lhf , mas deve ser muito mais fácil de implementar e computacionalmente mais rápido:
fonte