#ifndef PKM3D_H
#define PKM3D_H #include"kinematics.h"
#include"Inventor/Qt/viewers/SoQtExaminerViewer.h"
#include"Inventor/SoInput.h"
#include"Inventor/Qt/SoQt.h"
#include"Inventor/nodes/SoSeparator.h"
#include"Inventor/nodes/SoTransform.h"
#include"Inventor/nodes/SoRotationXYZ.h"
#include"Inventor/nodes/SoRotation.h"
#include"Inventor/nodes/SoTransform.h" #include<QWidget> class pkm3d
{
public:
pkm3d(QWidget *parent); SoQtExaminerViewer *Viewer; ///splane
SoInput mySplane,myBottom; SoInput myX,myY,myObj;
//SoTransform* Y_Pos0;//X轴对刀点,到达x轴对刀点按钮触发////////////////////////////////////
SoTransform* Y_form;//x轴移动,放定时器///////////////////////////////////////
SoTransform* Obj_form;//y轴移动 //支链4
SoInput myR4,myLeg4;
SoRotationXYZ *R4_Rot;//R4转动
SoTransform* Leg4_form;//Leg4滑动 //支链3
SoInput myR3,myLeg3;
SoRotationXYZ *R3_Rot;//R3转动
SoTransform* Leg3_form;//Leg3滑动 //支链2
SoInput myU2;
SoRotationXYZ *U2_Rot;//U2转动 //支链1
SoInput myU1;
SoRotationXYZ *U1_Rot;//U1转动 ///mplane
SoInput myMplane; SoRotation *Mplane_Rotp;
SoRotation *Mplane_Rott;
SoTransform* Mplane_form; //支链4
SoInput myS42,myS4;
SoRotationXYZ *S4_Rot;//S4转动
SoRotationXYZ *S42_Rot;//S41转动 //支链3
SoInput myS3,myS32;
SoRotationXYZ *S3_Rot;//S3转动
SoRotationXYZ *S32_Rot;//S31转动 //支链1
SoInput myLeg1;
SoRotationXYZ *Leg1_Rot;//Leg2转动 SoInput myU12;
SoTransform *U12_form;//U12移动 //支链2
SoInput myLeg2;
SoRotationXYZ *Leg2_Rot;//Leg2转动 SoInput myU22;
SoTransform *U22_form;//U22移动 private: SoSeparator *rootSplane;
SoSeparator *Splane;
SoSeparator *rootBottom;
SoTransform* bottom_Pos;
SoSeparator *Bottom;
SoSeparator *rootX;
SoTransform* X_Pos;
SoSeparator *X;
SoSeparator *rootY;
SoTransform* Y_Pos;
SoSeparator *Y;
SoSeparator *rootObj;
SoTransform* Obj_Pos;
SoSeparator *Obj;
SoSeparator *rootR4;
SoSeparator *R4;
SoTransform* R4_Pos1;
SoRotationXYZ *R4_Pos2;
SoSeparator *rootLeg4;
SoSeparator *Leg4;
SoSeparator *rootR3;
SoSeparator *R3;
SoTransform* R3_Pos1;
SoRotationXYZ *R3_Pos2;
SoSeparator *rootLeg3;
SoSeparator *Leg3;
SoSeparator *rootU2;
SoSeparator *U2;
SoTransform* U2_Pos;
SoSeparator *rootU1;
SoSeparator *U1;
SoTransform* U1_Pos;
SoSeparator *rootMplane;
SoSeparator *Mplane;
SoSeparator *rootLeg1;
SoSeparator *Leg1;
SoTransform *Leg1_Pos;
SoSeparator *rootU12;
SoSeparator *U12;
SoRotationXYZ *U12_Pos;
SoSeparator *rootLeg2;
SoSeparator *Leg2;
SoTransform *Leg2_Pos1;
SoRotationXYZ *Leg2_Pos2;
SoSeparator *rootU22;
SoSeparator *U22;
SoRotationXYZ *U22_Pos;
SoSeparator *rootS32;
SoSeparator *S32;
SoTransform* S32_Pos;
SoSeparator *rootS3;
SoSeparator *S3;
SoSeparator *rootS42;
SoSeparator *S42;
SoTransform* S42_Pos;
SoSeparator *rootS4;
SoSeparator *S4; }; #endif // PKM3D_H
#include "pkm3d.h"

pkm3d::pkm3d(QWidget *parent)
{
QWidget *lhy = SoQt::init(""); Viewer = new SoQtExaminerViewer(parent); rootSplane = new SoSeparator;
rootSplane->ref(); ///静
Splane = new SoSeparator;
mySplane.openFile("splane.wrl");
Splane=SoDB::readAll(&mySplane);
Splane->ref(); rootSplane->addChild(Splane); ////bottom
rootBottom = new SoSeparator;
rootBottom->ref();
Bottom = new SoSeparator;
myBottom.openFile("bottom.wrl");
Bottom=SoDB::readAll(&myBottom);
Bottom->ref(); //bottom位置
bottom_Pos = new SoTransform;
bottom_Pos->translation.setValue(0, -0.635f,0); Splane->addChild(rootBottom);
rootBottom->addChild(bottom_Pos);
rootBottom->addChild(Bottom); ////X
rootX = new SoSeparator;
rootX->ref();
X = new SoSeparator;
myX.openFile("x.wrl");
X = SoDB::readAll(&myX);
X->ref(); //X位置
X_Pos = new SoTransform;
X_Pos->translation.setValue(0, 0.052f,0); Bottom->addChild(rootX);
rootX->addChild(X_Pos);
rootX->addChild(X); ////Y导轨,,实际是x轴移动
rootY = new SoSeparator;
rootY->ref();
Y = new SoSeparator;
myY.openFile("y.wrl");
Y = SoDB::readAll(&myY);
Y->ref(); //Y位置
Y_Pos = new SoTransform;
Y_Pos->translation.setValue(0, 0.064f,0); // //Y对刀原点位置
// Y_Pos0 = new SoTransform;
// Y_Pos0->translation.setValue(0, 0.064f,0); //Y的移动
Y_form = new SoTransform;
//Y_form->translation.setValue(0, 0.064f,0); X->addChild(rootY);
rootY->addChild(Y_Pos);
rootY->addChild(Y_form);
rootY->addChild(Y); ////obj
rootObj = new SoSeparator;
rootObj->ref();
Obj = new SoSeparator;
myObj.openFile("obj.wrl");
Obj = SoDB::readAll(&myObj);
Obj->ref(); //Obj位置
Obj_form = new SoTransform;
Obj_form->translation.setValue(0, 0,0); //Obj移动,,,y轴移动
Obj_form = new SoTransform;
//Obj_form->translation.setValue(0, 0.052f,0); Y->addChild(rootObj);
rootObj->addChild(Obj_form);
rootObj->addChild(Obj); ///支链4
//R4
rootR4 = new SoSeparator;
rootR4->ref();
myR4.openFile("r4.wrl");
R4=SoDB::readAll(&myR4);
R4->ref();
//R4位置
R4_Pos1 = new SoTransform;
R4_Pos1->translation.setValue(0, 0, -0.18f);
R4_Pos2 = new SoRotationXYZ;
R4_Pos2->axis = SoRotationXYZ::Y;
R4_Pos2->angle = -3.1415926535;
//R4转动轴
R4_Rot = new SoRotationXYZ;
R4_Rot->axis = SoRotationXYZ::X;
R4_Rot->angle = 0; Splane->addChild(rootR4);
rootR4->addChild(R4_Pos1);
rootR4->addChild(R4_Pos2);
rootR4->addChild(R4_Rot);
rootR4->addChild(R4); //Leg4
rootLeg4 = new SoSeparator;
rootLeg4->ref();
myLeg4.openFile("leg4.wrl");
Leg4=SoDB::readAll(&myLeg4);
Leg4->ref();
//Leg4位置 //Leg4移动
Leg4_form = new SoTransform;
Leg4_form->translation.setValue(0, -0.208f, 0); rootR4->addChild(rootLeg4);
rootLeg4->addChild(Leg4_form);
rootLeg4->addChild(Leg4); ///////////3支链
//R4
rootR3 = new SoSeparator;
rootR3->ref();
myR4.openFile("r3.wrl");
R3=SoDB::readAll(&myR4);
R3->ref();
//R3位置
R3_Pos1 = new SoTransform;
R3_Pos1->translation.setValue(0, 0, 0.18f);
R3_Pos2 = new SoRotationXYZ;
R3_Pos2->axis = SoRotationXYZ::Y;
R3_Pos2->angle = 0;
//R3转动轴
R3_Rot = new SoRotationXYZ;
R3_Rot->axis = SoRotationXYZ::X;
R3_Rot->angle = 0; Splane->addChild(rootR3);
rootR3->addChild(R3_Pos1);
rootR3->addChild(R3_Pos2);
rootR3->addChild(R3_Rot);
rootR3->addChild(R3); //Leg3
rootLeg3 = new SoSeparator;
rootLeg3->ref();
myLeg3.openFile("leg3.wrl");
Leg3=SoDB::readAll(&myLeg3);
Leg3->ref();
//Leg3位置 //Leg3移动
Leg3_form = new SoTransform;
Leg3_form->translation.setValue(0, -0.208f, 0); rootR3->addChild(rootLeg3);
rootLeg3->addChild(Leg3_form);
rootLeg3->addChild(Leg3); ///支链2
//U2
rootU2 = new SoSeparator;
rootU2->ref();
myU2.openFile("u2.wrl");
U2=SoDB::readAll(&myU2);
U2->ref();
//U2位置
U2_Pos = new SoTransform;
U2_Pos->translation.setValue(-0.18f, 0, 0);
//U2转动轴
U2_Rot = new SoRotationXYZ;
U2_Rot->axis = SoRotationXYZ::X;
//U2_Rot->angle = 1; Splane->addChild(rootU2);
rootU2->addChild(U2_Pos);
rootU2->addChild(U2_Rot);
rootU2->addChild(U2); ///支链1
//U1
rootU1 = new SoSeparator;
rootU1->ref();
myU1.openFile("u1.wrl");
U1=SoDB::readAll(&myU1);
U1->ref();
//U1位置
U1_Pos = new SoTransform;
U1_Pos->translation.setValue(0.18f, 0, 0);
//U1转动轴
U1_Rot = new SoRotationXYZ;
U1_Rot->axis = SoRotationXYZ::X;
//U1_Rot->angle = 1; Splane->addChild(rootU1);
rootU1->addChild(U1_Pos);
rootU1->addChild(U1_Rot);
rootU1->addChild(U1); ///动平台
rootMplane = new SoSeparator;
rootMplane->ref();
myMplane.openFile("mmplane.wrl");
Mplane=SoDB::readAll(&myMplane);
Mplane->ref();
//mpanle移动和转动
Mplane_form = new SoTransform;
//Mplane_form->translation.setValue(0,-0.3f, 0 );
Mplane_Rotp = new SoRotation;
//Mplane_Rotp->axis = SoRotationXYZ::Z;
//Mplane_Rotp->angle = -0.4f;//初始psi
Mplane_Rott = new SoRotation;
//Mplane_Rott->axis = SoRotationXYZ::X;
//Mplane_Rott->angle = 0.4f;//初始theta rootSplane->addChild(rootMplane);
rootMplane->addChild(Mplane_form);
rootMplane->addChild(Mplane_Rotp);
rootMplane->addChild(Mplane_Rott);
rootMplane->addChild(Mplane); ////支链1 //Leg1
rootLeg1 = new SoSeparator;
rootLeg1->ref();
myLeg1.openFile("leg11.wrl");
Leg1=SoDB::readAll(&myLeg1);
Leg1->ref();
//Leg1位置
Leg1_Pos = new SoTransform;
Leg1_Pos->translation.setValue(0.12f,0, 0 ); //Leg1转动
Leg1_Rot = new SoRotationXYZ;
Leg1_Rot->axis = SoRotationXYZ::Z;
//Leg1_Rot->angle = 0; rootMplane->addChild(rootLeg1);
rootLeg1->addChild(Leg1_Pos);
rootLeg1->addChild(Leg1_Rot);
rootLeg1->addChild(Leg1); //U12
rootU12 = new SoSeparator;
rootU12->ref();
myU12.openFile("U12.wrl");
U12=SoDB::readAll(&myU12);
U12->ref();
//U12位置
U12_Pos = new SoRotationXYZ;
U12_Pos->axis = SoRotationXYZ::Y;
U12_Pos->angle = 3.1415926535; //U12移动
U12_form = new SoTransform;
U12_form->translation.setValue(0,0.18f, 0); rootLeg1->addChild(rootU12);
rootU12->addChild(U12_Pos);
rootU12->addChild(U12_form);
rootU12->addChild(U12); ////支链2 //Leg2
rootLeg2 = new SoSeparator;
rootLeg2->ref();
myLeg2.openFile("leg22.wrl");
Leg2=SoDB::readAll(&myLeg2);
Leg2->ref();
//Leg2位置
Leg2_Pos1 = new SoTransform;
Leg2_Pos1->translation.setValue(-0.12f,0, 0 );
Leg2_Pos2 = new SoRotationXYZ;
Leg2_Pos2->axis = SoRotationXYZ::Y;
Leg2_Pos2->angle = 3.1415926535; //Leg2转动
Leg2_Rot = new SoRotationXYZ;
Leg2_Rot->axis = SoRotationXYZ::Z;
//Leg2_Rot->angle = 0.4; rootMplane->addChild(rootLeg2);
rootLeg2->addChild(Leg2_Pos1);
rootLeg2->addChild(Leg2_Pos2);
rootLeg2->addChild(Leg2_Rot);
rootLeg2->addChild(Leg2); //U22
rootU22 = new SoSeparator;
rootU22->ref();
myU22.openFile("U22.wrl");
U22=SoDB::readAll(&myU22);
U22->ref();
//U22位置
U22_Pos = new SoRotationXYZ;
U22_Pos->axis = SoRotationXYZ::Y;
U22_Pos->angle = 3.1415926535; //U12移动
U22_form = new SoTransform;
U22_form->translation.setValue(0,0.18f, 0); rootLeg2->addChild(rootU22);
rootU22->addChild(U22_Pos);
rootU22->addChild(U22_form);
rootU22->addChild(U22); ////支链3
//S32
rootS32 = new SoSeparator;
rootS32->ref();
myS32.openFile("s32.wrl");
S32=SoDB::readAll(&myS32);
S32->ref();
//U2位置
S32_Pos = new SoTransform;
S32_Pos->translation.setValue(0, 0, 0.12f);
//U1转动轴
S32_Rot = new SoRotationXYZ;
S32_Rot->axis = SoRotationXYZ::X;
S32_Rot->angle = 0.5; Mplane->addChild(rootS32);
rootS32->addChild(S32_Pos);
rootS32->addChild(S32_Rot);
rootS32->addChild(S32); //S3
rootS3 = new SoSeparator;
rootS3->ref();
myS3.openFile("s3.wrl");
S3=SoDB::readAll(&myS3);
S3->ref();
//S3位置 //S3转动轴
S3_Rot = new SoRotationXYZ;
S3_Rot->axis = SoRotationXYZ::Z;
S3_Rot->angle = 0.5; rootS32->addChild(rootS3);
rootS3->addChild(S3_Rot);
rootS3->addChild(S3); ////支链4
//S42
rootS42 = new SoSeparator;
rootS42->ref();
myS42.openFile("s42.wrl");
S42=SoDB::readAll(&myS42);
S42->ref();
//U2位置
S42_Pos = new SoTransform;
S42_Pos->translation.setValue(0, 0,-0.12f);
//U1转动轴
S42_Rot = new SoRotationXYZ;
S42_Rot->axis = SoRotationXYZ::X;
S42_Rot->angle = 0.5; Mplane->addChild(rootS42);
rootS42->addChild(S42_Pos);
rootS42->addChild(S42_Rot);
rootS42->addChild(S42); //S4
rootS4 = new SoSeparator;
rootS4->ref();
myS4.openFile("s4.wrl");
S4=SoDB::readAll(&myS4);
S4->ref();
//S4位置 //S4转动轴
S4_Rot = new SoRotationXYZ;
S4_Rot->axis = SoRotationXYZ::Z;
//S4_Rot->angle = 0.5; rootS42->addChild(rootS4);
rootS4->addChild(S4_Rot);
rootS4->addChild(S4); Viewer->setSceneGraph(rootSplane);
Viewer->show();
//SoQt::mainLoop(); }

3D运动类申明与实现的更多相关文章

  1. WPF 3D 常用类(1)

    原文:WPF 3D 常用类(1) 几何数据相关类 Geometry3D 抽象类, 用于定义物体的几何数据, 可用于计算HitTest和BoundingBox MeshGeometry3D Geomet ...

  2. 第六章:3D向量类

    第一节:类接口的设计 1.好的类在设计之前首先要回答下列问题:“这些类将包含哪些数据?”,“这个类将提供什么样的操作?”,“在哪些数据上执行操作?”. 我们已经知道我们要设计的是3D向量类,用来存储x ...

  3. 最佳运动类APP-Keep设计与欣赏

    运动类APP是大家手机中必备的一款软件.如果说谁手机里没有任何涉及运动类APP,那只能说真的与时代脱轨了.近些年随着物质生活条件的改善,人们开始越来越重视自己的身体,所以也越来越多的人会进行身体锻炼. ...

  4. 3D教育类小图标_三维立体学习类icon图标素材

    3D教育类小图标_三维立体学习类icon图标素材

  5. Unity 3D Time 类

    Time   class in UnityEngine Description The interface to get time information from Unity. Static Var ...

  6. Unity3D 之3D游戏角色控制器运动

    3D运动,绑定了人形控制器后的一个简单的运动方法. using UnityEngine; using System.Collections; public class PlayerMove : Mon ...

  7. iOS控件之UIResponder类

    iOS控件之UIResponder类 在iOS中UIResponder类是专门用来响应用户的操作处理各种事件的,我们知道UIApplication.UIView.UIViewController这几个 ...

  8. 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇

    http://www.4gamer.net/games/216/G021678/20140714079/     连载第2回的本回,  Arc System Works开发的格斗游戏「GUILTY G ...

  9. css3 3d 与案例分析

    作者:魔洁 聊到3d那我们就先聊聊空间维度,首先一维,比如一条线就是一个一维空间,连点成线在这个空间里这些点只能前进后退,二维空间就是一个平面,这时点不仅可以前进后退还可以左右移动,3维空间也可以说是 ...

随机推荐

  1. [leetcode712]202. Happy Number判断快乐数字

    题目很简单,就是用哈希表存,判断有没有重复 学到了:java中字符串的比较有两种: 1.==这种是比较引用,只用两个字符串变量指向同一个地址才相等 2..equals()这种是值的比较,只要两个字符串 ...

  2. maven打包,跳过生成javadoc

    有时候由于代码中注释错误(比如方法参数)或者maven javadoc插件版本有问题,导致打包报错,而我们着急打包验证问题,没有时间一一修改错误,这时候可以先跳过生成javadoc,继续下一步工作. ...

  3. Java学习日报8..4

    class ArrayUtil{ public static void reverse(int data[]) { int center=data.length/2; int head=0; int ...

  4. 为什么import React from 'react',React首字母必须大写?

    很奇怪的是,明明没有用到 React,但是我不得不 import React.这是为什么? import React from 'react'; export default function (pr ...

  5. sqlite嵌入式数据库简介及特性

    p.p1 { margin: 0; font: 12px "Helvetica Neue"; color: rgba(69, 69, 69, 1) } p.p2 { margin: ...

  6. SAML和OAuth2这两种SSO协议的区别

    目录 简介 SAML SAML的缺点 OAuth2 OAuth2的缺点 两者的对比 CAS简介 简介 SSO是单点登录的简称,常用的SSO的协议有两种,分别是SAML和OAuth2.本文将会介绍两种协 ...

  7. excel字符串拼接

    函数:CONCATENATE() 参数可以是文本值.数字或单元格引用. 文本值和数字使用双引号括住,单元格引用直接使用.例如 =CONCATENATE("abc",A2),设A2为 ...

  8. c#中io常用操作笔记

    创建文件1 private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == string.Empty) { ...

  9. node实现文件下载

    1.引入fs const fs = require('fs') const path = reqire('path') 2.方法 const downloadFile = function (dest ...

  10. [新手教程]申请https泛域名解析

    前置准备 教程开始,我们默认相信小伙伴们对基本的域名购买及解析有了一定的认识和实践 一个正常的域名 一台公网服务器 域名解析操作 如:现在我们要设置frps的泛域名解析 设置二级域名 frp.xx.c ...