Here is my code. I want to rotate satellite through its center but it rotates through (0,0,0). I can't find its center. What can I do? satellite I get roll,yaw and pitch datas from serial port and then rotate satellite.
//Salih Gumusbuga Copyright ? 11 Jan 2021
namespace WPF_3D_gettingStarted
{
public partial class MainWindow : Window
{
Model3DGroup satellite;
BoxVisual3D mybox;
Model3D part;
Form1 form1 = new Form1();
public Model3D our_Model { get; set; }
public Model3DGroup dondur(Model3DGroup uydu, double angle)
{
RotateTransform3D myRotateTransform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 0, 0), 0));
myRotateTransform.CenterX = 0;
myRotateTransform.CenterY = 0;
myRotateTransform.CenterZ = 20;
uydu.Transform = myRotateTransform;
return uydu;
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
satellite=dondur(satellite, form1.angle);
}
public MainWindow()
{
InitializeComponent();
DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
Loaded += MainWindow_Loaded;
ModelImporter importer = new ModelImporter();
Material material = new DiffuseMaterial(new SolidColorBrush(Colors.Beige));
importer.DefaultMaterial = material;
satellite = new Model3DGroup();
m_helix_viewport.DefaultCamera = new PerspectiveCamera();
m_helix_viewport.DefaultCamera.Position = new Point3D(400,0, 0);
m_helix_viewport.DefaultCamera.LookDirection = new Vector3D(-400, 0, 0);
m_helix_viewport.DefaultCamera.UpDirection = new Vector3D(0, 0, 1);
part = importer.Load(@"uydu/uydu.obj");
satellite.Children.Add(part);
this.our_Model = satellite;
mybox = new BoxVisual3D();
mybox.Height = 5;
mybox.Width = 5;
mybox.Length = 5;
m_helix_viewport.Children.Add(mybox);
overall_grid.DataContext = this;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
form1.Show();
}
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…