Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wolfram mathematica 从Mathematica样条曲线图形中提取坐标_Wolfram Mathematica - Fatal编程技术网

Wolfram mathematica 从Mathematica样条曲线图形中提取坐标

Wolfram mathematica 从Mathematica样条曲线图形中提取坐标,wolfram-mathematica,Wolfram Mathematica,如何提取构成以下图形的所有点的坐标(这里只是一个示例) 问题是,如果我将//FullForm添加到最后一行,则输出中没有点坐标,因此没有用于进行提取的模式: 使用Plot或CoutourPlot输出,我将编码Flatten[Cases][Normal@output,第[x]行:>x,无穷大],1] 这在这里是不可能的。b样条曲线本身就是一个图形原语,所以你不能像那样拉出“线” 您需要使用相关的BSplineFunction生成积分: pts=BSplineFunction[{{-.4, -.3

如何提取构成以下图形的所有点的坐标(这里只是一个示例)

问题是,如果我将
//FullForm
添加到最后一行,则输出中没有点坐标,因此没有用于进行提取的模式: 使用
Plot
CoutourPlot
输出,我将编码
Flatten[Cases][Normal@output,第[x]行:>x,无穷大],1]


这在这里是不可能的。

b样条曲线本身就是一个图形原语,所以你不能像那样拉出“线”

您需要使用相关的
BSplineFunction
生成积分:

 pts=BSplineFunction[{{-.4, -.3}, {0, -.6}, {.4, -.3}, {0, -1.2}}, 
        SplineClosed -> True] /@ Range[0, 1, .01];


 Graphics@Line@pts

如果需要从图形中提取,可以执行以下操作:

Cases[graphics, BSplineCurve[a__] :> BSplineFunction[a], Infinity]

但您仍然需要向其提供一个参数值表以获取您的点。

要仅提取控制点,您可以:

curveData=Cases[graphics, BSplineCurve[a__] :>  a, Infinity]
在图形中找到了多少条BSplineCurves

Length[curveData]
这里是其中一个的控制点

curveData// First // MatrixForm
如果您有一个BSPLineFunction列表,您可以了解更多信息

因此,首先将BSplineCurves转换为BSplineFunctions,如前一篇文章所述

bfs =Cases[graphics, BSplineCurve[a__] :> BSplineFunction[a], Infinity]
那你就可以走了

Inputform[bfs] 
并解析结果,但更简洁:

cdata = Cases[bfs, BSplineFunction[a__] :> a, Infinity]; 
d = Partition[cdata, 9];
这是Mathematica 11。其他版本可能需要不同的分区

d的每个元素都类似于:

d[[1]] // MatrixForm

1
{{0.,1.}}
{3}
{False}
{{{0.,0.,0.},{0.,298.986,167.077},{0.,497.083,497.459},{0.,503.603,839.898}},Automatic}
{{0.,0.,0.,0.,1.,1.,1.,1.}}
{0}
MachinePrecision
Unevaluated

第5个元素包含控制点坐标。第六个对应于结。其他元素看起来很熟悉,但让我们不要发表我们的猜测

谢谢!你为我打开了一扇门,让我有很多新的可能性。
d[[1]] // MatrixForm

1
{{0.,1.}}
{3}
{False}
{{{0.,0.,0.},{0.,298.986,167.077},{0.,497.083,497.459},{0.,503.603,839.898}},Automatic}
{{0.,0.,0.,0.,1.,1.,1.,1.}}
{0}
MachinePrecision
Unevaluated