0
$\begingroup$

I would like to plot a surface between the intersecting points of three 3-dimensional curves. The curves are created using ListLinePlot3D, from the following lists:

List1:

{{0.01, 0., 1.}, {5.72, 0.01, 1.}, {11.32, 0.04, 1.}, {16.7, 0.09, 
  1.}, {21.81, 0.16, 1.}, {26.57, 0.25, 1.}, {30.97, 0.36, 1.}, {35., 
  0.49, 1.}, {38.66, 0.64, 1.}, {41.99, 0.81, 1.}, {45., 1., 
  1.}, {47.73, 1.21, 1.}, {50.2, 1.44, 1.}, {52.43, 1.69, 1.}, {54.46,
   1.96, 1.}, {56.31, 2.25, 1.}, {58., 2.56, 1.}, {59.54, 2.89, 
  1.}, {60.95, 3.24, 1.}, {62.24, 3.61, 1.}, {63.44, 4., 1.}, {64.54, 
  4.41, 1.}}

List2:

{{89.99, 1., 0.}, {84.28, 1., 0.01}, {78.68, 1., 0.04}, {73.3, 1., 
  0.09}, {68.19, 1., 0.16}, {63.43, 1., 0.25}, {59.03, 1., 
  0.36}, {55., 1., 0.49}, {51.34, 1., 0.64}, {48.01, 1., 0.81}, {45., 
  1., 1.}, {42.27, 1., 1.21}, {39.8, 1., 1.44}, {37.57, 1., 
  1.69}, {35.54, 1., 1.96}, {33.69, 1., 2.25}, {32., 1., 
  2.56}, {30.46, 1., 2.89}, {29.05, 1., 3.24}, {27.76, 1., 
  3.61}, {26.56, 1., 4.}, {25.46, 1., 4.41}}

List3:

{{89.99, 1., 0.}, {86.98, 0.9, 0.}, {83.65, 0.81, 0.01}, {79.99, 0.72,
   0.02}, {75.96, 0.64, 0.04}, {71.56, 0.56, 0.06}, {66.79, 0.49, 
  0.09}, {61.69, 0.42, 0.12}, {56.3, 0.36, 0.16}, {50.7, 0.3, 
  0.2}, {44.99, 0.25, 0.25}, {39.28, 0.2, 0.3}, {33.69, 0.16, 
  0.36}, {28.3, 0.12, 0.42}, {23.2, 0.09, 0.49}, {18.43, 0.06, 
  0.56}, {14.03, 0.04, 0.64}, {10.01, 0.02, 0.72}, {6.34, 0.01, 
  0.81}, {3.01, 0., 0.9}, {0., 0., 1.}}

Can anyone provide a way forward?

ListLinePlot3D of lists above:

Another View

$\endgroup$
5
  • $\begingroup$ Please post the full data in internet and add link here. $\endgroup$
    – cvgmt
    Mar 25 at 12:17
  • 2
    $\begingroup$ Welcome to Mathematica StackExchange! What exactly do you mean by "a surface between curves"? There are infinitely many different surfaces which you can draw. $\endgroup$
    – Domen
    Mar 25 at 12:43
  • $\begingroup$ @Domen Thank you for reaching out - I am referring to the triangular area contained by the 3 intersections seen here. $\endgroup$ Mar 25 at 12:56
  • $\begingroup$ @cvgmt Kindly find updated description with full data $\endgroup$ Mar 25 at 13:10
  • 1
    $\begingroup$ You can do it with four curves as a Coons Patch I doubt the result with 3 curves will be as good. $\endgroup$
    – flinty
    Mar 25 at 14:02

1 Answer 1

1
$\begingroup$

I arrived at the answer. Personal opinion is there is not enough ListPlot3D material here on Stack Exchange, so I hope this will still help someone someday.

Basically I combined all lists into one List, using a simple AppendTo. I then plugged the list into a ListPlot3D, adjusted some ranges and then got the result I wanted.

Table[If[Data1[[i, 2]] <= 1, AppendTo[Data,  Data1[[i]]]], {i, 1, 
   Length[Data1]}];
Table[AppendTo[Data,  Data2[[i]]], {i, 1, Length[Data2]}];
Table[AppendTo[Data,  Data3[[i]]], {i, 1, Length[Data3]}];

p = ListPlot3D[Data, PlotRange -> {{0, 90}, {0, 1}, {0, 1}}, 
   PlotStyle -> Yellow, Mesh -> None, ClippingStyle -> None];

q = ListLinePlot3D[{Data1, Data2, Data3}, 
  PlotRange -> {{0, 90}, {0, 3}, {0, 3}}, 
  PlotStyle -> {Green, Red, Blue}]

Show[q, p]

The result: Surface between 3 intersecting points

Thanks for the trouble guys. Feel free to comment if there are better ways to achieve this.

$\endgroup$
1
  • $\begingroup$ Have you seen Join[]? $\endgroup$
    – Michael E2
    Mar 26 at 11:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.