En nuestro sistema, no son los requisitos que queremos mover algunas líneas de código fuente (con poca precisión) para las líneas de referencia (con alta precisión). Siguientes imágenes se le da el uso normal de los casos. El rojo es una línea de código fuente y el azul es una línea de referencia.
Para este caso, la línea de código fuente sería trasladado parcialmente, y el resultado sería como el de la línea verde muestra:
Hay situaciones en las que el origen de la línea de la necesidad de ser trasladado por completo.
Resultado:
Actualmente nuestra solución es jefe de proyecto/punto final de la línea de la fuente a la línea de referencia y viceversa, a continuación, encontrar proyecta puntos en el origen y de la línea de referencia. Con estos proyecta puntos, podemos extraer la pieza necesaria de la fuente y la línea de referencia y luego combinarlos en una nueva.
Esto funciona para la mayoría de los casos, pero hay casos en que este método no funciona. Específicamente, cuando cualquiera de la línea "C" como la forma o la cabeza punto está muy cerca del punto final. Las dos fotos siguientes da el escenario.
Aplicando mi algoritmo, obtenemos el resultado:
En una manera que es comprensible debido a que el algoritmo actual sólo busca proyecta puntos y extractos de líneas.
Lo que nos espera es algo como esto:
Entonces, ¿qué necesito más robusto algoritmo para hacer esto, por lo que también pueden manejar casos especiales como el anterior. He tratado de proyecto de todos los puntos de una línea a otra y encontrar los dos proyecta puntos que más cerca de la cabeza y el punto final de la proyección de la línea, pero no hubo suerte. Todavía puedo encontrar casos en los que dar resultados inesperados.
Alguien ha llegado a través de problemas similares antes? También sería genial si hay un software o de la biblioteca puede hacer trabajo similar. Cualquier respuesta será bienvenida.