gpt4 book ai didi

python - SVG多边形形状的坐标数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:45:36 25 4
gpt4 key购买 nike

我正在用 Python 制作一个随机 map 生成器。我正在生成随机的政治领土。我有一个算法可以为区域列表生成 X、Y 坐标列表。这些领土不需要连续,因此点列表可以产生多个多边形。

目前,我正在将点列表转换为路径字符串,本质上是一条很长的线,环绕形成一个形状。不完全是 Path 的目的。它的效率也很低;如果你有一个特别长的领土,它可能有几千个字符长。此外,使用此方法使 stroke 属性基本上像 fill 属性一样工作,这意味着我无法在区域之间绘制边界线。

Here's an example of what I'm doing now :

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="512" height="512">
<path d="M 332 263 H 346 M 331 264 H 347 M 330 265 H 348 M 329 266 H 349 M 328 267 H 350 M 327 268 H 351 M 326 269 H 352 M 325 270 H 364 M 324 271 H 365 M 323 272 H 366 M 322 273 H 367 M 321 274 H 368 M 320 275 H 369 M 319 276 H 370 M 318 277 H 371 M 317 278 H 372 M 317 279 L 317 279 M 319 279 M 322 279 H 373 M 318 280 L 318 280 M 323 280 H 374 M 317 281 L 317 281 M 324 281 H 375 M 322 282 L 322 282 M 324 282 H 376 M 320 283 H 376 M 321 284 H 376 M 321 285 H 323 M 325 285 H 330 M 333 285 M 340 285 H 375 M 323 286 H 324 M 326 286 H 328 M 342 286 H 371 M 373 286 H 374 M 325 287 L 325 287 M 327 287 M 345 287 H 373 M 346 288 H 372 M 345 289 H 372 M 346 290 H 369 M 372 290 M 375 290 M 345 291 H 368 M 371 291 M 374 291 H 377 M 345 292 H 368 M 374 292 H 375 M 344 293 H 367 M 344 294 H 363 M 365 294 M 343 295 H 362 M 344 296 H 363 M 343 297 H 363 M 345 298 H 363 M 345 299 H 363 M 345 300 H 363 M 345 301 H 361 M 344 302 H 361 M 345 303 H 361 M 346 304 H 357 M 347 305 H 356 M 350 306 H 351 M 354 306 M 356 306" stroke="rgb(252, 81, 193)">
</path>
</svg>

实际问题:
如何将点列表转换为一个或多个多边形?更具体地说,我需要一个多边形“线”字符串。

最佳答案

显然,您的领土生成算法是基于位图的。您需要的是描绘形状的轮廓,而不是像您现在所做的那样通过“运行长度编码”形状制作 SVG。

描述如何做到这一点有点超出 S.O.回答。在一般意义上,这称为“位图跟踪”。一个流行的库是 potrace。我认为它有 python 绑定(bind)。

否则,您可能可以利用领土算法构建的内部数据结构做得更好(比 potrace)。

关于python - SVG多边形形状的坐标数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24976688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com