Python项目中保持线条形态的随机点重绘方案咨询
需求:随机重绘线条且保持形态的优化方案
我有一个Python项目,需要多次重绘线条,要求点的位置随机,但保持线条的形状和点数大致不变。最终输出将使用多边形点,而非Bezier路径(不过不反对将Bezier作为中间步骤)。
下图展示了点如何在线条上移动到不同位置同时保持整体形态:
我已有一个可行示例,通过在现有点之间选取随机新点来实现(下图中的红线),效果尚可,但希望了解其他更优实现方法?
尽管此代码使用matplotlib演示线条,但最终程序不会使用它。
import numpy as np from matplotlib import pyplot as plt import random from random import (randint,uniform) def move_along_line(p1, p2, scalar): distX = p2[0] - p1[0] distY = p2[1] - p1[1] modX = (distX * scalar) + p1[0] modY = (distY * scalar) + p1[1] return [modX, modY] x_coords = [213.5500031,234.3809357,255.211853,276.0427856,296.8737183,317.7046204,340.1997681,364.3751221,388.5505066,414.8896484,444.5192261,478.5549622,514.5779419,545.4779053,570.3830566,588.0241699,598.2469482,599.772583,596.758728,593.7449341,590.7310791,593.373291,610.0373535,642.1326294,677.4451904,710.0697021,737.6887817,764.4020386,791.1152954,817.8284912,844.541687,871.2550049,897.9682007,924.6813965,951.3945923,978.1078491,1009.909546,1042.689941,1068.179199,1089.543091] y_coords = [487.3099976,456.8832703,426.4565125,396.0297852,365.6030273,335.1763,306.0349426,278.1913452,250.3477478,224.7166748,203.0908051,191.2358704,197.6810608,217.504303,244.4946136,276.7698364,312.0551453,348.6885986,385.4395447,422.1904297,458.9414063,495.5985413,527.0128479,537.1477661,527.6642456,510.959259,486.6988525,461.2799683,435.8611145,410.4422913,385.023468,359.6045532,334.18573,308.7669067,283.3480835,257.929184,239.4429474,253.6099091,280.1803284,310.158783] plt.plot(x_coords,y_coords,color='b') plt.scatter(x_coords,y_coords,s=2) new_line_x = [] new_line_y = [] for tgt in range(len(x_coords)-1): #tgt = randint(0, len(x_coords)-1) next_pt = tgt+1 new_pt = move_along_line([x_coords[tgt],y_coords[tgt]], [x_coords[next_pt],y_coords[next_pt]], uniform(0, 1)) new_line_x.append(new_pt[0]) new_line_y.append(new_pt[1]) plt.plot(new_line_x,new_line_y,color='r') plt.scatter(new_line_x,new_line_y,s=10) ax = plt.gca() ax.set_aspect('equal') plt.show()

非常感谢!
内容的提问来源于stack exchange,提问作者Dr. Pontchartrain
相关产品推荐
相关产品推荐

