Is there Point3D?

17,622

Solution 1

System.Windows.Forms.DataVisualization.Charting has Point3D class.

Represents the coordinates of a three-dimensional (3D) data point. This class is used when performing custom drawing with 3D charts.

  • X     Gets or sets the X coordinate of a 3D point.
  • Y     Gets or sets the Y coordinate of a 3D point.
  • Z     Gets or sets the Z coordinate of a 3D point.

Also has Point3D structure.

Represents an x-, y-, and z-coordinate point in 3-D space.

Solution 2

System.Windows.Forms.DataVisualization.Charting has a class Point3D

  • float X, Y, Z
  • System.Windows.Forms.DataVisualization.dll (WinForms)
  • .NET Framework >= 4.0

System.Windows.Media.Media3D has a struct Point3D

  • double X, Y, Z
  • PresentationCore.dll (WPF)
  • .NET Framework >= 3.0
  • .NET Core >= 3.0

I know that Vector3D is not a Point3D, but if you just want a struct with X, Y, Z:

System.Windows.Media.Media3D has a struct Vector3D

  • double X, Y, Z
  • PresentationCore.dll (WPF)
  • .NET Framework >= 3.0
  • .NET Core >= 3.0

System.Numerics has a struct Vector3

  • float X, Y, Z
  • System.Numerics.dll
  • .NET Framework >= 4.6
  • .NET Core >= 1.0

Only System.Numerics.Vector3 does NOT depend on WinForms or WPF!

Solution 3

  • DirectX has a Microsoft.DirectX.Vector3 Structure, but will it be overkill for your application?
  • XNA has class Microsoft.XNA.Framework.Vector3
  • Unity3D has a Vector3 class for Representation of 3D vectors and points.
  • OpenTK also represents a 3D vector using three single-precision floating-point numbers.
Share:
17,622

Related videos on Youtube

steavy
Author by

steavy

student

Updated on September 16, 2022

Comments

  • steavy
    steavy almost 2 years

    Is there a built in type Point3 in .Net? Some kind of this

    public class Point3D
    {
        public double X { get; set; }
        public double Y { get; set; }
        public double Z { get; set; }
    }
    

    but built in. It is not hard to implement it myself, but..

  • Cody Gray
    Cody Gray about 11 years
    True enough. But if your code does not already use one of these libraries, it would be silly to add a dependency on them for such a simple data-storage class. Just define it yourself.
  • Terry Tyson
    Terry Tyson almost 5 years
    I realize I'm late to the party on this one but another advantage of you own class is that you can make it handle unit conversions if necessary.
  • ToolmakerSteve
    ToolmakerSteve over 2 years
    @TerryTyson - or use a built-in class, and define extension methods.
  • primo
    primo about 2 years
    Perhaps worth noting, System.Windows.Media.Media3D also contains Matrix3D and Quaternion, so if you intend to do any transformations on your points, it's probably the correct choice.