当前位置:首页 » 编程软件 » 编程横越

编程横越

发布时间: 2022-03-06 00:06:00

java3d的详细介绍

引言
Java3DAPI是用来开发三维图形和开发基于Web的3D应用程序(applet)的编程接口.用于开发三维图形软件的3DAPI(OpenGL、Direct3D)都是基于摄像机模型的思想,即通过调整摄像机的参数来控制场景中的显示对象,而Java3D则提出了一种新的基于视平台的视模型和输入设备模型的技术实现方案,即通过改变视平台的位置、方向来浏览整个虚拟场景.它不仅提供了建造和操作三维几何物体的高层构造函数,而且利用这些构造函数还可以建造复杂程度各异的虚拟场景,这些虚拟场景大到宇宙天体,小到微观粒子.
Java3D是JavaMediaAPIs中的一部分,可广泛地应用于各种平台,而且用Java3DAPI开发的应用程序和基于Web的3D小应用程序(applet),还可以访问整个Java类,且可以与Internet很好地集成,即如果在浏览器中安装了Java3D的浏览插件,在网上也可浏览Java3D所创建的虚拟场景.Java3DAPI还汲取了已有图形APIs的优点,即Java3D的底层图形构造函数不仅综合了底层APIs(Direcrt3D、OpenGL)最好的绘制思想,而且它的高层图形绘制还综合了基于场景图的思想,同时,它又引入了一些通用的图形环境所未考虑的新概念(如3D立体声),这样将有助于提高用户在虚拟场景的沉浸感.本文将着重介绍Java3D针对VR应用所提出的基于视模型和输入设备模型的新思想,在此基础上又讨论了如何利用Java3D来开发VR应用程序及其实现方法,并设计实现了一个应用实例.
1.适于VR应用开发的Java3DAPI众所周知,开发VR应用程序是一件很繁琐的工作,其开发人员必须编写应用程序可能遇到的各种输入和显示设备的接口程序,或者依赖专为VR应用开发而设计的应用程序编程接口(API),且典型的VR应用必须跟踪用户的头部位置和方向,以生成与头部位置方向相一致的虚拟场景图.
另外,还需要先跟踪身体的其它部位(手、臂或腿部),然后通过身体各部位在虚拟场景中的虚拟视点与场景中的对象进行交互,而应用程序也必须具有能够利用跟踪输入设备在视点内放置物体,并标明其在生成的三维图象中的位置和方向的功能.同时,面向VR的应用程序开发接口(API)必须能支持3D图形生成、处理跟踪器的输入,并能将跟踪信息反馈到图形绘制中.
Java3DAPI可自动将头部跟踪器的输入集成到图形生成中,并具有通过访问其它跟踪器信息来控制其它特征的功能,但它是通过一种新的视模型(viewmodel)技术来实现的.该视模型是将用户真实的物质环境与计算机生成的虚拟环境相互独立,并建立它们之间的通信桥梁.该API也明确定义了用来探测Java3D物体六自由度(6DOF)传感器的返回值,并将其应用于显示场景图中.总之,这种新的视模型和输入设备模型可以很方便地将交互式的3D图形应用程序转化为VR应用程序.
Java3D视模型
2.1新的视模型概念(viewmodel)基于摄像机的视模型是模仿虚拟环境中的摄像机,而不是虚拟环境中人的“替身”,而且它是通过控制摄像机与视点的相关参数来控制所显示的场景,但这种方法,在用户物质环境确定某些视参数的系统中是不合理的,例如在头盔显示器(HMD)系统中,HMD的光学性能就直接确定了应用程序所显示的视域.由于不同的HMD有不同的光学特性,因此如果允许终端用户随意改变光学参数显然是不合理的.这里视参数的值将随终端用户物质环境的不同而不同,而影响视参数的主要因素有显示器大小、显示器的位置(戴在头上,还是放在桌子上)、三维空间中用户的头部位置、头盔显示器的实际显示视域、每英寸的显示象素等.由于Java3D的视模型直接提供了头部跟踪的功能,因而使用户产生了真实存在于虚拟环境中的错觉.
Java3D不仅提出了新的基于视平台的视模型概念,同时将其推广到包括显示设备和6DOF外围输入设备(如头部跟踪器等)的接口支持中,而且新的视模型继承了Java的“writeonce,vieweverywhere”本质.这意味着由Java3D视模型开发的应用程序或applet可广泛地应用于各种显示环境.这种显示环境可以是标准的计算机显示屏、多元显示空间,也可以是头盔显示器.Java3D视模型是通过将虚拟环境和物质环境完全独立的方式来实现上述功能的,且该视模型可将虚拟环境中视平台的位置、方向和大小,与Java3D绘制的与视平台位置、方向相一致的虚拟场景相区分.一般应用程序控制视平台的位置和方向,而绘制着色系统则依据终端用户的物质环境以及用户在物质环境中的位置和方向来确定显示场景.
2.2视模型的组成
Java3D视模型由虚拟环境和物质环境两部分组成,其中,虚拟环境由ViewPlatform对象来表示,它是虚拟对象存在的空间;而物质环境则由View对象以及和它相关的对象来表示.这里,View对象和它的相关对象就描述了用户所处的显示和操纵输入设备环境.虽然视模型将虚拟环境和物质环境相互独立,但可通过一一对应关系来建立两种世界之间相互通信的桥梁,这样将使得终端用户的行为会影响虚拟环境中的对象,同时虚拟环境中的对象行为也会影响终端用户的视点.
Java3D可通过几个对象来定义视模型参数.这些对象包括View对象及其相关对象、PhysicalBody对象、Canvas3D对象、PhysicalEnvironment对象、Screen3D对象.视模型相关的对象(如图1所示)其作用如下:ViewPlatform用来标志场景图中视点位置的节点.其父节点则指明了视平台在虚拟环境中的位置、方向和大小.View用于指定需要处理场景图的信息.Canvas3D定义了Java3D绘制图象的窗口,它提供了Canvas3D在Screen3D对象中的大小、形状和位置信息.Screen3D用于描述显示屏幕的物理属性.PhysicalBody用于封装那些与物质体相关的参视模型的组成及其相互关系数(如左、右眼的位置等).PhysicalEnvironment用于封装那些与物质体环境相关的参数(如,用于头状物体或头盔式跟踪器的校验信息).
2.3虚拟环境中的视平台(ViewPlatform)
鉴于视平台定义了一坐标系统,于是虚拟环境中的原始点和参考点就有了一参考坐标系.这里视平台代表与视对象相关的一个点,并充当确定绘制图象的基础.图2显示了包括视平台节点场景图的一部分.由图2可见,视平台的父节点确定了视平台在虚拟环境中的位置和方向.若通过修改与TransformGroup节点相关的Transform3D对象,就可以在虚拟场景中随意移动视平台.虽然虚拟环境中可以有许多不同的视平台,但特定的视对象只能与一个视平台相关联,于是在Canvas3D对象中所绘制的场景均来自于一个视平台的视点.这样应用程序就可通过修改视平台的TransformGroup节点,在虚拟环境中漫游.图2包括视平台的局部场景图3Java3D的输入设备模型Java3D除了支持通用的键盘、鼠标输入外,还能给各种不间断的输入设备,如6DOF跟踪设备和操纵杆提供支持.由于不同的跟踪输入设备其工作原理不同,因而计算机与其交互的方式也不同.为了给不同的6DOF输入设备提供支持,Java3D还提供了一个输入设备接口,而且该输入设备接口还定义了一个抽象的输入设备,虽然用其可以实现对一特定设备的驱动,但输入设备接口的实现必须实现接口所定义的所有方法(如设备开、关、读取操作、状态设置及查询等).Java3D的输入设备列表就用这些方法同特定的设备进行交互.
一般Java3D环境中,可能包括许多输入设备,而且这些输入设备不一定是实际的物理设备,也可能是虚拟设备,例如通过软件的方法将鼠标的运动参数转化为6DOF虚拟跟踪球的参数,来模拟虚拟跟踪球的输入.由于所有的输入设备都由许多传感器对象组成,因此每一种输入设备都与一定数量的传感器对象相关,且每一种传感器都与其传感器设备6DOF数据的一个数据源相关.当输入设备驱动的数据改变时,传感器对象的数据也会相应改变,而且传感器对象由读取传感器对象组成.由于缓冲区中记录了各传感器N个读取传感器对象的值,因此可以对传感器数据进行平均,以及对传感器输入值的趋势进行预测等处理,但应用程序的开发并不直接使用输入设备.Java3D是通过一个传感器数组将输入设备抽象化,传感器对象数组是物质环境对象的一个子类,该数组是由与输入设备相关的对象指针组成.Java程序可以直接从传感器数组中获取传感器的值,并将其用到场景图中,或按任意方式对其进行处理。
2.4用Java3D开发VR应用程序利用
Java3D开发的VR应用程序或者applets程序,可建造一个虚拟场景,并能将一个或多个场景图插入到虚拟场景中,虚拟场景由超结构对象集组成,对象集则包括一个世界对象(Universeobject)、一个或多个场所对象(Localeobjects)和按树状结构排列的由节点物体组成的一个或多个场景图(Scenegraphs).该场景图又称为分枝图(Branchgraph),它包括绘制对象节点、光照节点、行为节点和声音节点等,其中,包含内容节点的分枝图称为内容分枝,包含视平台对象的分枝图称为视分枝,视平台对象用来确定用户的位置和方向.图3表示了具有多分枝图的Java3D场景.图3应用程序场景图由于这种分枝图只描述了场景所要绘制的对象,并不确定对象的绘制次序,因此图中节点的次序和位置与对象的绘制次序无关,而图中的父节点和子节点的直线路径就唯一确定了子节点的图形范围.由于绘制次序的不确定性,因而使得Java3D能横越场景图的任何次序,且它能从左到右,从顶部到底部穿过场景图;或者从右到左,甚至并行遍历整个场景图.Java3D的分支图为树状结构,且图中的每一个节点只有一个父节点.这样通过辅助的场景图机制就可以实现通用场景图的共享,而且具有连接属性的叶节点可以连接到共享子图.分枝图中的节点分为群节点(groupnode)和叶节点(leafnode)两类,其中,群节点按照粘贴的原理来组织场景图单元。
群节点的层次结构图一般群节点包括:BranchGroup、TransformGroup、Switch、OrderGroup、DecalGroup和ShareGroup节点,其中,BranchGroup是分枝图的根节点;而TransformGroup用来指明所有子节点的位置和方向;Switch则用于实现一个或多个子图的转换;OrderGroup用于使它的子节点按照特定的次序绘制;DecalGroup是OrderGroup的一个子集;ShareGroup跟BranchGroup一样,是一个场景图的根节点.虽然共享图作为Java3D场景图的一部分从不直接出现,但是连接节点可以引用.另外群节点还可以包含各种子节点以及所包含对象的群节点或叶节点.这些子节点用一个关联索引属性来允许对特定的子节点进行操作.如果没有指明特定的顺序群节点,Java3D还可以按照任意指定的顺序来绘制群节点的子节点.虽然叶节点是场景图的抽象类,它没有子节点,但叶节点包括了Java3D的各种信息.叶节点由Shape3D、ViewPlatform、Sound、Light以及用户定义的行为节点等组成,Shape3D和ViewPlatform节点在Java3D的视模型和输入模型中扮演着重要的角色,因为它描述了图形系统的两个重要方面,其中,Shape3D描述了场景中对象的几何形状,而ViewPlatform则标定了用户或其视点在虚拟环境中的方向或位置.
另外,应用程序还可像操纵分枝图中的任意对象一样,来操纵ViewPlatform,而且应用程序还可平移、旋转和缩放ViewPlatform,即通过改变ViewPlatform的位置和方向,ViewPlatform将随同用户的视点一起移动,来浏览整个虚拟环境.虽然ViewPlatform是按照事先规定的路线浏览场景,但不会限制用户视点的移动和向不同方向浏览场景.

Ⅱ ug编程进给率设置的是3000出的程序为什么是800

我的ug8.0,我看了一下,我们的后处理出来的程序;
查找F值,搜索出来有几个不同的进给,包括,进刀、退刀、移动(即横越),切削,一共四个F值;所以你类似搜索一下看看;

Ⅲ 翻译3~~~~

1.4几何类型(是编程语言中的数据类型吗?)

一个几何图就是一系列用直线段或圆弧相互连接的顶点。几何图由一些类型(元素)构成。空间数据库支持几种简单的类型和几何元素(由这些类型组成的集合)。包括二维的:
点和点集
线集
多边形
弧线束(所有的弧线都可以由圆弧形成)
多边弧形
复合多边形
复合线集
圆形
矩形
二维的点(包括X,Y两个坐标)一般对应于经度和纬度。线集由一对或多对用于定义线段的点组成。多边形由一些相互连接的线集组成的闭环,也包含了多边形的内部。

1.5数据模型

空间数据模型是一种分层结构,由元素、几何体、层,这与空间数据的描述方法相对应。层由几何体构成,而几何体又由元素构成。例如,一个点可能代表一个建筑的位置,一条线代表一条路或一条飞机航线,一个多边形代表一个国家、城市、市区或街区。

1.5.1元素
一个元素就是几何图的一块积木。空间元素支持的类型有:点、线集和多边形。例如,元素可以表示星群(点集),道路(线集),国界(多边形)。每一个元素的坐标用一对X、Y表示。一个多边形外部的环线和内部有孔的环线都被视为截然不同的元素,他们共同组成一个复合多边形。

一个点的数据由一个坐标组成。线数据由两个代表线段元素的坐标组成。多边形由多个代表多边形的线段的定点的坐标对组成。这些坐标沿着多边形被依次定义(外部多边环形逆时针,内部环形顺时针)。

Ⅳ 所有做URAL的编程者OR(自认为)奥数很厉害的人!请!

首先,有一个循环也就是 0到9 循环十次 接受十个数并将十个数相乘的积S 然后 到到下一个循环 这个循环的条件是(N)1到S 在这个循环里边有个IF 语句 判断 S取整 N 如果成立 (I初始值为0)I加1 否则N+1 继续循环 最后输出 I 旧可以了啊 !

Ⅳ ug4.0电脑编程为什么圆弧角老是过切

横越要填不能空着,空的nc代码就是Go了而不是g01了,还有后处理不好,圆孤下力时,有的机床就不认,要在后处理改为线性,还有精加工时,编程公差要小点,还有4.0就不要用了,在win7下你会发现非常的卡

Ⅵ CNC 编程 程序过切

一般来讲,数控编程过程的主要内容包括:分析零件图样、工艺处理、数值计算、编写加工程序单、制作控制介质、程序校验和首件试加工。 数控编程的具体步骤与要求如下: 1.分析零件图 首先要分析零件的材料、形状、尺寸、精度、批量、毛坯形状和热处理要求等,以便确定该零件是否适合在数控机床上加工,或适合在哪种数控机床上加工。同时要明确加工的内容和要求。 2.工艺处理 在分析零件图的基础上,进行工艺分析,确定零件的加工方法(如采用的工夹具、装夹定位方法等)、加工路线(如对刀点、换刀点、进给路线)及切削用量(如主轴转速、进给速度和背吃刀量等)等工艺参数。数控加工工艺分析与处理是数控编程的前提和依据,而数控编程就是将数控加工工艺内容程序化。制定数控加工工艺时,要合理地选择加工方案,确定加工顺序、加工路线、装夹方式、刀具及切削参数等;同时还要考虑所用数控机床的指令功能,充分发挥机床的效能;尽量缩短加工路线,正确地选择对刀点、换刀点,减少换刀次数,并使数值计算方便;合理选取起刀点、切入点和切入方式,保证切入过程平稳;避免刀具与非加工面的干涉,保证加工过程安全可靠等。有关数控加工工艺方面的内容,我们将在第2章2.3节及2.4节中作详细介绍。 3.数值计算 根据零件图的几何尺寸、确定的工艺路线及设定的坐标系,计算零件粗、精加工运动的轨迹,得到刀位数据。对于形状比较简单的零件(如由直线和圆弧组成的零件)的轮廓加工,要计算出几何元素的起点、终点、圆弧的圆心、两几何元素的交点或切点的坐标值,如果数控装置无刀具补偿功能,还要计算刀具中心的运动轨迹坐标值。对于形状比较复杂的零件(如由非圆曲线、曲面组成的零件),需要用直线段或圆弧段逼近,根据加工精度的要求计算出节点坐标值,这种数值计算一般要用计算机来完成。有关数值计算的内容,我们将在第3章中详细介绍。 4.编写加工程序单 根据加工路线、切削用量、刀具号码、刀具补偿量、机床辅助动作及刀具运动轨迹,按照数控系统使用的指令代码和程序段的格式编写零件加工的程序单,并校核上述两个步骤的内容,纠正其中的错误。 5.制作控制介质 把编制好的程序单上的内容记录在控制介质上,作为数控装置的输入信息。通过程序的手工输入或通信传输送入数控系统。 6.程序校验与首件试切 编写的程序单和制备好的控制介质,必须经过校验和试切才能正式使用。校验的方法是直接将控制介质上的内容输入到数控系统中,让机床空运转,以检查机床的运动轨迹是否正确。在有CRT图形显示的数控机床上,用模拟刀具与工件切削过程的方法进行检验更为方便,但这些方法只能检验运动是否正确,不能检验被加工零件的加工精度。因此,要进行零件的首件试切。当发现有加工误差时,分析误差产生的原因,找出问题所在,加以修正,直至达到零件图纸的要求。 二数控编程的方法 数控编程一般分为手工编程和自动编程两种。 1.手工编程 手工编程就是从分析零件图样、确定加工工艺过程、数值计算、编写零件加工程序单、制作控制介质到程序校验都是人工完成。它要求编程人员不仅要熟悉数控指令及编程规则,而且还要具备数控加工工艺知识和数值计算能力。对于加工形状简单、计算量小、程序段数不多的零件,采用手工编程较容易,而且经济、及时。因此,在点位加工或直线与圆弧组成的轮廓加工中,手工编程仍广泛应用。对于形状复杂的零件,特别是具有非圆曲线、列表曲线及曲面组成的零件,用手工编程就有一定困难,出错的概率增大,有时甚至无法编出程序,必须用自动编程的方法编制程序。 2.自动编程 自动编程是利用计算机专用软件来编制数控加工程序。编程人员只需根据零件图样的要求,使用数控语言,由计算机自动地进行数值计算及后置处理,编写出零件加工程序单,加工程序通过直接通信的方式送入数控机床,指挥机床工作。自动编程使得一些计算繁琐、手工编程困难或无法编出的程序能够顺利地完成。 小结: 本章主要讲述了数控设备的产生和发展、数控机床的加工原理、数控加工特点及应用以及数控编程的基础知识。要求读者了解数控设备产生及发展的过程,数控机床的组成以及各部分的基本功能,数控机床的加工特点。掌握数控编程的主要内容及步骤,并能根据零件形状及生产周期选择合适的加工方法。参考资料: http://www.c-cnc.com/news/news.asp?id=6715

Ⅶ matlab 编程要在执行程序时输入一个行向量,怎么编写

在程序中间加入input函数。
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
input请求使用者输入。
【语法】
user_entry=input('prompt')
user_entry=input('prompt','s')
【函数描述 】
对于input命令的响应可 以是任何MATLAB表 达式,它使用当前工作空间中的变量进行计算。user_entry=input('prompt')将命令提示显示为屏幕上的提示符 ,等待键盘 的输 入 ,并 且返 回输入值 到user_entry中 。user_entry=input('prompt','s')返回输入的字符串为一个文本变量 ,而不是一个变量名或者数值。
【解 析 】
如果用户没有输入任何字符而按下Return键 ,输入返回个空矩阵。prompt的文本字符串可能包含一个或者更多的'\n'字 符。字符'\n'意味着跳过下一行 ,它允许 prompt字符串横越几行。为了仅显示一个反斜杠,应使用'\\'。

热点内容
nss存储 发布:2025-01-20 21:04:47 浏览:35
下载了怎么解压 发布:2025-01-20 20:55:22 浏览:179
c语言第八章答案 发布:2025-01-20 20:55:17 浏览:697
安卓主题壁纸怎么换回来 发布:2025-01-20 20:54:03 浏览:626
免费云存储排行榜 发布:2025-01-20 20:48:39 浏览:232
访问农信 发布:2025-01-20 20:47:06 浏览:2
用什么循环编译时间短 发布:2025-01-20 20:46:55 浏览:688
医院his源码 发布:2025-01-20 20:43:06 浏览:984
数据库结构原理 发布:2025-01-20 20:35:39 浏览:9
mysql主从搭建服务器配置 发布:2025-01-20 20:33:06 浏览:12