相关疑难解决方法(0)

如何抵消三次贝塞尔曲线?

我正在尝试创建一个"平行"贝塞尔曲线.在我的尝试中,我已经接近但没有雪茄.我试图在2条曲线(红色,蓝色)之间保持稳定的1px偏移.

目前的尝试

我的主要目标是使用边缘偏离algorythm来扩展/缩小svg路径.


对于正在寻找解决方案的其他人,我创建了一个AS3版本.

http://seant23.wordpress.com/2010/11/12/offset-bezier-curves/

graphics bezier cad

24
推荐指数
4
解决办法
1万
查看次数

双色Path对象

下图说明了我要实现的目标:

http://i53.tinypic.com/14ugfpd.png

基本上我想创建两个Path彼此"接触"的对象(并行路径).这是用于生成此图像的XAML:

<StackPanel Orientation="Horizontal">
    <StackPanel.LayoutTransform>
        <ScaleTransform CenterX="0" CenterY="0" ScaleX="15" ScaleY="15" />
    </StackPanel.LayoutTransform>

    <Grid Margin="-5,0,0,0">
        <Path Stroke="Blue">
            <Path.Data>
                <PathGeometry>M10,10 C20,10 10,20 20,20</PathGeometry>
            </Path.Data>
        </Path>
        <Path Stroke="Red">
            <Path.Data>
                <PathGeometry>M10,11 C19,10.85 9,20.80 20,21</PathGeometry>
            </Path.Data>
        </Path>
    </Grid>

    <Grid Margin="-5,0,0,0">
        <Path Stroke="Blue">
            <Path.Data>
                <PathGeometry>M10,10 C20,10 10,20 20,20</PathGeometry>
            </Path.Data>
        </Path>
        <Path Stroke="Red">
            <Path.Data>
                <PathGeometry>M10,11 C19,11 9,21 20,21</PathGeometry>
            </Path.Data>
        </Path>
    </Grid>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

第一条曲线具有手动优化的点位置,第二条曲线具有通过考虑行程厚度而容易计算的点位置.你可以看到第二条曲线并不完美,因为两者之间有一个空间.如何以编程方式创建两条完美的"触摸"曲线,而无需手动优化每条曲线(实际上这是不可能的,因为曲线是在代码中生成的)?

简单地说,我Path在代码中生成一条曲线(resp.),我需要它有两种颜色.所以我认为制作第二个并行Path可以做到这一点,但调整Geometry第二个Path(使它并行)已被证明是有问题的.

更新#1

平行的直线和曲线查尔斯Petzold的可能是解决这个问题的方法之一.它实际上工作得很好,但它会使曲线变平,这会在深度缩放时产生视觉效果,当然还有性能缺陷.

然而,该算法不会尝试找到与另一个贝塞尔曲线平行的贝塞尔曲线.该算法完全基于折线:输入是一条或多条折线,输出由每条输入折线的多条折线组成.因此,ParallelPath需要"展平"输入几何体 - 这意味着将整个几何体(包括圆弧和贝塞尔曲线)转换为折线近似.

更新#2

所以我的一个朋友(数学博士感受器)已经分析了这个问题并且创建(三阶) …

.net c# wpf xaml curve

12
推荐指数
2
解决办法
2901
查看次数

如何在PyQt4中绘制一条带动画的线条

我有一个点列表.例如,points = [[160, 75], [115, 567]].

如何在PyQt4中绘制一条线,所以它会是这样的: 线

提前致谢.

编辑:为了记录,我正在尝试实现Bezier曲线,所以它看起来像这样: 四次Bézier曲线

这是我目前的代码:

from PyQt4.QtGui import QWidget, QPolygonF, QPainter, QPen, QBrush, QColor, \
    QApplication, QIcon, QVBoxLayout, QSlider, QHBoxLayout, QPushButton, QLCDNumber
from PyQt4.QtCore import QObject, SIGNAL, SLOT, QPointF, Qt, QRectF, QPointF
import time, sys

#================================================================
# For the next block I used this post
# http://stackoverflow.com/a/3220819/736306, 
# but I wish to replace it with self.liniar_bez(),
# biliniar_bez(), self.cubic_bez() and self.fourG_bez()
# because I want to control 't' with self.slider

def avg(a, …
Run Code Online (Sandbox Code Playgroud)

python drawing pyqt pyqt4 qpainter

10
推荐指数
1
解决办法
8319
查看次数

标签 统计

.net ×1

bezier ×1

c# ×1

cad ×1

curve ×1

drawing ×1

graphics ×1

pyqt ×1

pyqt4 ×1

python ×1

qpainter ×1

wpf ×1

xaml ×1