不可能立方体体中包不包括球体?

1395人阅读
/**********************************************************&Copyright&(C)&2001&&&Daniel&Selman&First&distributed&with&the&book&"Java&3D&Programming"&by&Daniel&Selman&and&published&by&Manning&Publications.&/selman&This&program&is&free&&you&can&redistribute&it&and/or&modify&it&under&the&terms&of&the&GNU&General&Public&License&as&published&by&the&Free&Software&Foundation,&version&2.&This&program&is&distributed&in&the&hope&that&it&will&be&useful,&but&WITHOUT&ANY&WARRANTY;&without&even&the&implied&warranty&of&MERCHANTABILITY&or&FITNESS&FOR&A&PARTICULAR&PURPOSE.&&See&the&GNU&General&Public&License&for&more&details.&The&license&can&be&found&on&the&WWW&at:&http://www.fsf.org/copyleft/gpl.html&Or&by&writing&to:&Free&Software&Foundation,&Inc.,&59&Temple&Place&-&Suite&330,&Boston,&MA&&,&USA.&Authors&can&be&contacted&at:&Daniel&Selman:&daniel@selman.org&If&you&make&changes&you&think&others&would&like,&please&&contact&one&of&the&authors&or&someone&at&the&&www.j3d.org&web&site.&**************************************************************/import&java.awt.BorderLimport&java.awt.GraphicsConfigTimport&java.awt.GraphicsDimport&java.awt.GraphicsEimport&java.awt.event.ActionEimport&java.awt.event.ActionLimport&java.awt.event.WindowAimport&java.awt.event.WindowEimport&java.awt.image.BufferedIimport&java.awt.image.RenderedIimport&java.io.FileOutputSimport&javax.media.j3d.Aimport&javax.media.j3d.AmbientLimport&javax.media.j3d.Aimport&javax.media.j3d.Bimport&javax.media.j3d.BoundingSimport&javax.media.j3d.Bimport&javax.media.j3d.BranchGimport&javax.media.j3d.Canvas3D;import&javax.media.j3d.DirectionalLimport&javax.media.j3d.GraphicsConfigTemplate3D;import&javax.media.j3d.Gimport&javax.media.j3d.ImageCimport&javax.media.j3d.ImageComponent2D;import&javax.media.j3d.Limport&javax.media.j3d.Mimport&javax.media.j3d.PhysicalBimport&javax.media.j3d.PhysicalEimport&javax.media.j3d.RotationIimport&javax.media.j3d.SceneGraphOimport&javax.media.j3d.Transform3D;import&javax.media.j3d.TransformGimport&javax.media.j3d.Vimport&javax.media.j3d.ViewPimport&javax.media.j3d.VirtualUimport&javax.swing.JFimport&javax.swing.JMimport&javax.swing.JMenuBimport&javax.swing.JMenuIimport&javax.swing.JPimport&javax.swing.JPopupMimport&javax.swing.ToolTipMimport&javax.swing.WindowCimport&javax.vecmath.Color3f;import&javax.vecmath.Point3d;import&javax.vecmath.Vector3d;import&javax.vecmath.Vector3f;import&com.sun.image.codec.jpeg.JPEGCimport&com.sun.image.codec.jpeg.JPEGImageE/**&*&This&example&displays&a&Swing&based&application&with&a&JMenuBar&that&allows&*&you&to&switch&between&displaying&a&Cube&and&a&Sphere.&You&can&also&perform&a&*&simple&screen&capture&and&start/stop&rotation&using&menu&commands.&*/public&class&SwingTest&extends&JPanel&implements&ActionListener&{&&/**&&&*&the&is&root&of&the&scenegraph&which&contains&the&cube&and&sphere&objects&&&*/&&private&BranchGroup&sceneBranchGroup&=&null;&&/**&&&*&a&rotation&interpolator&that&automatically&rotates&the&cube&and&sphere&&&*/&&private&RotationInterpolator&rotator&=&null;&&/**&&&*&an&offscreen&Canvas3D&that&is&used&to&perform&screen&captures&&&*/&&private&Canvas3D&offScreenCanvas3D&=&null;&&/**&&&*&the&image&that&is&attached&to&the&offscreen&Canvas3D&and&contains&the&&&*&results&of&screen&captures&&&*/&&private&ImageComponent2D&imageComponent&=&null;&&/**&&&*&the&width&of&the&offscreen&Canvas3D&&&*/&&private&static&final&int&offScreenWidth&=&400;&&/**&&&*&the&height&of&the&offscreen&Canvas3D&&&*/&&private&static&final&int&offScreenHeight&=&400;&&/**&&&*&Constructor.&Set&the&layout&algorithm&for&the&panel&and&initialize&the&&&*&Java&3D&rendering&system&and&view&side&scenegraph.&&&*/&&public&SwingTest()&{&&&&setLayout(new&BorderLayout());&&&&init();&&}&&/**&&&*&Initialize&the&Java&3D&rendering&system&and&view&side&scenegraph.&&&*/&&protected&void&init()&{&&&&VirtualUniverse&universe&=&createVirtualUniverse();&&&&Locale&locale&=&createLocale(universe);&&&&BranchGroup&sceneBranchGroup&=&createSceneBranchGroup();&&&&Background&background&=&createBackground();&&&&if&(background&!=&null)&&&&&&sceneBranchGroup.addChild(background);&&&&ViewPlatform&vp&=&createViewPlatform();&&&&BranchGroup&viewBranchGroup&=&createViewBranchGroup(&&&&&&&&getViewTransformGroupArray(),&vp);&&&&locale.addBranchGraph(sceneBranchGroup);&&&&addViewBranchGroup(locale,&viewBranchGroup);&&&&createView(vp);&&}&&/**&&&*&Callback&to&allow&the&Canvas3D&to&be&added&to&a&Panel.&&&*/&&protected&void&addCanvas3D(Canvas3D&c3d)&{&&&&add(c3d,&BorderLayout.CENTER);&&}&&/**&&&*&Create&a&Java&3D&View&and&attach&it&to&a&ViewPlatform&&&*/&&protected&View&createView(ViewPlatform&vp)&{&&&&View&view&=&new&View();&&&&PhysicalBody&pb&=&createPhysicalBody();&&&&PhysicalEnvironment&pe&=&createPhysicalEnvironment();&&&&view.setPhysicalEnvironment(pe);&&&&view.setPhysicalBody(pb);&&&&if&(vp&!=&null)&&&&&&view.attachViewPlatform(vp);&&&&view.setBackClipDistance(getBackClipDistance());&&&&view.setFrontClipDistance(getFrontClipDistance());&&&&//&create&the&visible&canvas&&&&Canvas3D&c3d&=&createCanvas3D(false);&&&&view.addCanvas3D(c3d);&&&&//&create&the&off&screen&canvas&&&&view.addCanvas3D(createOffscreenCanvas3D());&&&&//&add&the&visible&canvas&to&a&component&&&&addCanvas3D(c3d);&&&&return&&&}&&/**&&&*&Create&a&Background&for&the&Canvas3D.&&&*/&&protected&Background&createBackground()&{&&&&Background&back&=&new&Background(new&Color3f(0.9f,&0.9f,&0.9f));&&&&back.setApplicationBounds(createApplicationBounds());&&&&return&&&}&&/**&&&*&Create&a&Bounds&object&for&the&scene.&&&*/&&protected&Bounds&createApplicationBounds()&{&&&&return&new&BoundingSphere(new&Point3d(0.0,&0.0,&0.0),&100.0);&&}&&/**&&&*&Create&a&Canvas3D.&&&*&&&&*&@param&offscreen&&&*&&&&&&&&&&&&true&to&specify&an&offscreen&canvas&&&*/&&protected&Canvas3D&createCanvas3D(boolean&offscreen)&{&&&&GraphicsConfigTemplate3D&gc3D&=&new&GraphicsConfigTemplate3D();&&&&gc3D.setSceneAntialiasing(GraphicsConfigTemplate.PREFERRED);&&&&GraphicsDevice&gd[]&=&GraphicsEnvironment.getLocalGraphicsEnvironment()&&&&&&&&.getScreenDevices();&&&&Canvas3D&c3d&=&new&Canvas3D(gd[0].getBestConfiguration(gc3D),&offscreen);&&&&c3d.setSize(500,&500);&&&&return&c3d;&&}&&/**&&&*&Initialize&an&offscreen&Canvas3D.&&&*/&&protected&Canvas3D&createOffscreenCanvas3D()&{&&&&offScreenCanvas3D&=&createCanvas3D(true);&&&&offScreenCanvas3D.getScreen3D()&&&&&&&&.setSize(offScreenWidth,&offScreenHeight);&&&&offScreenCanvas3D.getScreen3D().setPhysicalScreenHeight(&&&&&&&&0.0254&/&90&*&offScreenHeight);&&&&offScreenCanvas3D.getScreen3D().setPhysicalScreenWidth(&&&&&&&&0.0254&/&90&*&offScreenWidth);&&&&RenderedImage&renderedImage&=&new&BufferedImage(offScreenWidth,&&&&&&&&offScreenHeight,&BufferedImage.TYPE_3BYTE_BGR);&&&&imageComponent&=&new&ImageComponent2D(ImageComponent.FORMAT_RGB8,&&&&&&&&renderedImage);&&&&imageComponent.setCapability(ImageComponent2D.ALLOW_IMAGE_READ);&&&&offScreenCanvas3D.setOffScreenBuffer(imageComponent);&&&&return&offScreenCanvas3D;&&}&&/**&&&*&Callback&to&get&the&scale&factor&for&the&View&side&of&the&scenegraph&&&*/&&protected&double&getScale()&{&&&&return&3;&&}&&/**&&&*&Get&the&TransformGroup&for&the&View&side&of&the&scenegraph&&&*/&&public&TransformGroup[]&getViewTransformGroupArray()&{&&&&TransformGroup[]&tgArray&=&new&TransformGroup[1];&&&&tgArray[0]&=&new&TransformGroup();&&&&//&move&the&camera&BACK&a&little...&&&&//&note&that&we&have&to&invert&the&matrix&as&&&&//&we&are&moving&the&viewer&&&&Transform3D&t3d&=&new&Transform3D();&&&&t3d.setScale(getScale());&&&&t3d.setTranslation(new&Vector3d(0.0,&0.0,&-20.0));&&&&t3d.invert();&&&&tgArray[0].setTransform(t3d);&&&&return&tgA&&}&&/**&&&*&Adds&the&View&side&of&the&scenegraph&to&the&Locale&&&*/&&protected&void&addViewBranchGroup(Locale&locale,&BranchGroup&bg)&{&&&&locale.addBranchGraph(bg);&&}&&/**&&&*&Create&a&Locale&for&the&VirtualUniverse&&&*/&&protected&Locale&createLocale(VirtualUniverse&u)&{&&&&return&new&Locale(u);&&}&&/**&&&*&Create&the&scene&side&of&the&scenegraph&&&*/&&protected&BranchGroup&createSceneBranchGroup()&{&&&&//&create&the&root&of&the&scene&side&scenegraph&&&&BranchGroup&objRoot&=&new&BranchGroup();&&&&//&create&a&TransformGroup&to&rotate&the&objects&in&the&scene&&&&//&set&the&capability&bits&on&the&TransformGroup&so&that&it&&&&//&can&be&modified&at&runtime&&&&TransformGroup&objTrans&=&new&TransformGroup();&&&&objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);&&&&objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);&&&&//&create&a&spherical&bounding&volume&&&&BoundingSphere&bounds&=&new&BoundingSphere(new&Point3d(0.0,&0.0,&0.0),&&&&&&&&100.0);&&&&//&create&a&4x4&transformation&matrix&&&&Transform3D&yAxis&=&new&Transform3D();&&&&//&create&an&Alpha&interpolator&to&automatically&generate&&&&//&modifications&to&the&rotation&component&of&the&transformation&matrix&&&&Alpha&rotationAlpha&=&new&Alpha(-1,&Alpha.INCREASING_ENABLE,&0,&0,&&&&&&&&4000,&0,&0,&0,&0,&0);&&&&//&create&a&RotationInterpolator&behavior&to&effect&the&TransformGroup&&&&rotator&=&new&RotationInterpolator(rotationAlpha,&objTrans,&yAxis,&&&&&&&&0.0f,&(float)&Math.PI&*&2.0f);&&&&//&set&the&scheduling&bounds&on&the&behavior&&&&rotator.setSchedulingBounds(bounds);&&&&//&add&the&behavior&to&the&scenegraph&&&&objTrans.addChild(rotator);&&&&//&create&the&BranchGroup&which&contains&the&objects&&&&//&we&add/remove&to&and&from&the&scenegraph&&&&sceneBranchGroup&=&new&BranchGroup();&&&&//&allow&the&BranchGroup&to&have&children&added&at&runtime&&&&sceneBranchGroup.setCapability(Group.ALLOW_CHILDREN_EXTEND);&&&&sceneBranchGroup.setCapability(Group.ALLOW_CHILDREN_READ);&&&&sceneBranchGroup.setCapability(Group.ALLOW_CHILDREN_WRITE);&&&&//&add&both&the&cube&and&the&sphere&to&the&scenegraph&&&&sceneBranchGroup.addChild(createCube());&&&&sceneBranchGroup.addChild(createSphere());&&&&//&create&the&colors&for&the&lights&&&&Color3f&lColor1&=&new&Color3f(0.7f,&0.7f,&0.7f);&&&&Vector3f&lDir1&=&new&Vector3f(-1.0f,&-1.0f,&-1.0f);&&&&Color3f&alColor&=&new&Color3f(0.2f,&0.2f,&0.2f);&&&&//&create&the&ambient&light&&&&AmbientLight&aLgt&=&new&AmbientLight(alColor);&&&&aLgt.setInfluencingBounds(bounds);&&&&//&create&the&directional&light&&&&DirectionalLight&lgt1&=&new&DirectionalLight(lColor1,&lDir1);&&&&lgt1.setInfluencingBounds(bounds);&&&&//&add&the&lights&to&the&scenegraph&&&&objRoot.addChild(aLgt);&&&&objRoot.addChild(lgt1);&&&&//&wire&the&scenegraph&together&&&&objTrans.addChild(sceneBranchGroup);&&&&objRoot.addChild(objTrans);&&&&//&return&the&root&of&the&scene&side&of&the&scenegraph&&&&return&objR&&}&&/**&&&*&Create&a&BranchGroup&that&contains&a&Cube.&The&user&data&for&the&&&*&BranchGroup&is&set&so&the&BranchGroup&can&be&identified.&&&*/&&protected&BranchGroup&createCube()&{&&&&BranchGroup&bg&=&new&BranchGroup();&&&&bg.setCapability(BranchGroup.ALLOW_DETACH);&&&&bg.addChild(new&com.sun.j3d.utils.geometry.ColorCube());&&&&bg.setUserData("Cube");&&&&return&&&}&&/**&&&*&Create&a&BranchGroup&that&contains&a&Sphere.&The&user&data&for&the&&&*&BranchGroup&is&set&so&the&BranchGroup&can&be&identified.&&&*/&&protected&BranchGroup&createSphere()&{&&&&BranchGroup&bg&=&new&BranchGroup();&&&&bg.setCapability(BranchGroup.ALLOW_DETACH);&&&&Appearance&app&=&new&Appearance();&&&&Color3f&objColor&=&new&Color3f(1.0f,&0.7f,&0.8f);&&&&Color3f&black&=&new&Color3f(0.0f,&0.0f,&0.0f);&&&&app.setMaterial(new&Material(objColor,&black,&objColor,&black,&80.0f));&&&&bg.addChild(new&com.sun.j3d.utils.geometry.Sphere(1,&app));&&&&bg.setUserData("Sphere");&&&&return&&&}&&/**&&&*&Removes&a&BranchGroup&from&the&scene&based&on&user&data&&&*&&&&*&@param&name&&&*&&&&&&&&&&&&the&user&data&to&look&for&&&*/&&protected&void&removeShape(String&name)&{&&&&try&{&&&&&&java.util.Enumeration&e&=&sceneBranchGroup.getAllChildren();&&&&&&int&index&=&0;&&&&&&while&(e.hasMoreElements()&!=&false)&{&&&&&&&&SceneGraphObject&sgObject&=&(SceneGraphObject)&e&&&&&&&&&&&&.nextElement();&&&&&&&&Object&userData&=&sgObject.getUserData();&&&&&&&&if&(userData&instanceof&String&&&&&&&&&&&&&&&((String)&userData).compareTo(name)&==&0)&{&&&&&&&&&&System.out.println("Removing:&"&+&sgObject.getUserData());&&&&&&&&&&sceneBranchGroup.removeChild(index);&&&&&&&&}&&&&&&&&index++;&&&&&&}&&&&}&catch&(Exception&e)&{&&&&&&//&the&scenegraph&may&not&have&yet&been&synchronized...&&&&}&&}&&/**&&&*&Creates&the&PhysicalBody&for&the&View&&&*/&&protected&PhysicalBody&createPhysicalBody()&{&&&&return&new&PhysicalBody();&&}&&/**&&&*&Creates&the&PhysicalEnvironment&for&the&View&&&*/&&protected&PhysicalEnvironment&createPhysicalEnvironment()&{&&&&return&new&PhysicalEnvironment();&&}&&/**&&&*&Returns&the&View&Platform&Activation&Radius&&&*/&&protected&float&getViewPlatformActivationRadius()&{&&&&return&100;&&}&&/**&&&*&Creates&the&View&Platform&for&the&View&&&*/&&protected&ViewPlatform&createViewPlatform()&{&&&&ViewPlatform&vp&=&new&ViewPlatform();&&&&vp.setViewAttachPolicy(View.RELATIVE_TO_FIELD_OF_VIEW);&&&&vp.setActivationRadius(getViewPlatformActivationRadius());&&&&return&&&}&&/**&&&*&Returns&the&distance&to&the&rear&clipping&plane.&&&*/&&protected&double&getBackClipDistance()&{&&&&return&100.0;&&}&&/**&&&*&Returns&the&distance&to&the&near&clipping&plane.&&&*/&&protected&double&getFrontClipDistance()&{&&&&return&1.0;&&}&&/**&&&*&Creates&the&View&side&BranchGroup.&The&ViewPlatform&is&wired&in&beneath&&&*&the&TransformGroups.&&&*/&&protected&BranchGroup&createViewBranchGroup(TransformGroup[]&tgArray,&&&&&&ViewPlatform&vp)&{&&&&BranchGroup&vpBranchGroup&=&new&BranchGroup();&&&&if&(tgArray&!=&null&&&&tgArray.length&&&0)&{&&&&&&Group&parentGroup&=&vpBranchG&&&&&&TransformGroup&curTg&=&null;&&&&&&for&(int&n&=&0;&n&&&tgArray.&n++)&{&&&&&&&&curTg&=&tgArray[n];&&&&&&&&parentGroup.addChild(curTg);&&&&&&&&parentGroup&=&curTg;&&&&&&}&&&&&&tgArray[tgArray.length&-&1].addChild(vp);&&&&}&else&&&&&&vpBranchGroup.addChild(vp);&&&&return&vpBranchG&&}&&/**&&&*&Creates&the&VirtualUniverse&for&the&application.&&&*/&&protected&VirtualUniverse&createVirtualUniverse()&{&&&&return&new&VirtualUniverse();&&}&&/**&&&*&Called&to&render&the&scene&into&the&offscreen&Canvas3D&and&save&the&image&&&*&(as&a&JPEG)&to&disk.&&&*/&&protected&void&onSaveImage()&{&&&&offScreenCanvas3D.renderOffScreenBuffer();&&&&offScreenCanvas3D.waitForOffScreenRendering();&&&&System.out.println("Rendered&to&offscreen");&&&&try&{&&&&&&FileOutputStream&fileOut&=&new&FileOutputStream("image.jpg");&&&&&&JPEGImageEncoder&encoder&=&JPEGCodec.createJPEGEncoder(fileOut);&&&&&&encoder.encode(imageComponent.getImage());&&&&&&fileOut.flush();&&&&&&fileOut.close();&&&&}&catch&(Exception&e)&{&&&&&&System.err.println("Failed&to&save&image:&"&+&e);&&&&}&&&&System.out.println("Saved&image.");&&}&&/**&&&*&AWT&callback&to&indicate&that&an&items&has&been&selected&from&a&menu.&&&*/&&public&void&actionPerformed(ActionEvent&ae)&{&&&&System.out.println("Action&Performed:&"&+&ae.getActionCommand());&&&&java.util.StringTokenizer&toker&=&new&java.util.StringTokenizer(ae&&&&&&&&.getActionCommand(),&"|");&&&&String&menu&=&toker.nextToken();&&&&String&command&=&toker.nextToken();&&&&if&(menu.equals("File"))&{&&&&&&if&(command.equals("Exit"))&{&&&&&&&&System.exit(0);&&&&&&}&else&if&(command.equals("Save&Image"))&{&&&&&&&&onSaveImage();&&&&&&}&&&&}&else&if&(menu.equals("View"))&{&&&&&&if&(command.equals("Cube"))&{&&&&&&&&removeShape("Sphere");&&&&&&&&sceneBranchGroup.addChild(createCube());&&&&&&}&else&if&(command.equals("Sphere"))&{&&&&&&&&removeShape("Cube");&&&&&&&&sceneBranchGroup.addChild(createSphere());&&&&&&}&&&&}&else&if&(menu.equals("Rotate"))&{&&&&&&if&(command.equals("On"))&{&&&&&&&&rotator.setEnable(true);&&&&&&}&else&if&(command.equals("Off"))&{&&&&&&&&rotator.setEnable(false);&&&&&&}&&&&}&&}&&/**&&&*&Helper&method&to&creates&a&Swing&JMenuItem.&&&*/&&private&JMenuItem&createMenuItem(String&menuText,&String&buttonText,&&&&&&ActionListener&listener)&{&&&&JMenuItem&menuItem&=&new&JMenuItem(buttonText);&&&&menuItem.addActionListener(listener);&&&&menuItem.setActionCommand(menuText&+&"|"&+&buttonText);&&&&return&menuI&&}&&/*&&&*&Registers&a&window&listener&to&handle&ALT+F4&window&closing.&&&*&&&&*&@param&frame&the&JFrame&for&which&we&want&to&intercept&close&messages.&&&*/&&static&protected&void&registerWindowListener(JFrame&frame)&{&&&&//&disable&automatic&close&support&for&Swing&frame.&&&&frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);&&&&//&adds&the&window&listener&&&&frame.addWindowListener(new&WindowAdapter()&{&&&&&&//&handles&the&system&exit&window&message&&&&&&public&void&windowClosing(WindowEvent&e)&{&&&&&&&&System.exit(1);&&&&&&}&&&&});&&}&&public&JMenuBar&createMenuBar()&{&&&&JMenuBar&menuBar&=&new&JMenuBar();&&&&JMenu&menu&=&null;&&&&menu&=&new&JMenu("File");&&&&menu.add(createMenuItem("File",&"Save&Image",&this));&&&&menu.add(createMenuItem("File",&"Exit",&this));&&&&menuBar.add(menu);&&&&menu&=&new&JMenu("View");&&&&menu.add(createMenuItem("View",&"Cube",&this));&&&&menu.add(createMenuItem("View",&"Sphere",&this));&&&&menuBar.add(menu);&&&&menu&=&new&JMenu("Rotate");&&&&menu.add(createMenuItem("Rotate",&"On",&this));&&&&menu.add(createMenuItem("Rotate",&"Off",&this));&&&&menuBar.add(menu);&&&&return&menuB&&}&&/**&&&*&main&entry&point&for&the&application.&Creates&the&parent&JFrame,&the&&&*&JMenuBar&and&creates&the&JPanel&which&is&the&application&itself.&&&*/&&public&static&void&main(String[]&args)&{&&&&JPopupMenu.setDefaultLightWeightPopupEnabled(false);&&&&ToolTipManager&ttm&=&ToolTipManager.sharedInstance();&&&&ttm.setLightWeightPopupEnabled(false);&&&&JFrame&frame&=&new&JFrame();&&&&SwingTest&swingTest&=&new&SwingTest();&&&&frame.setJMenuBar(swingTest.createMenuBar());&&&&frame.getContentPane().add(swingTest);&&&&frame.setSize(550,&550);&&&&registerWindowListener(frame);&&&&frame.setVisible(true);&&}}
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:70264次
积分:1499
积分:1499
排名:第15330名
原创:69篇
转载:11篇
评论:15条
(2)(5)(1)(4)(2)(1)(2)(2)(3)(2)(3)(7)(2)(1)(3)(5)(1)(2)(1)(3)(4)(6)(4)(4)(3)(2)(1)(2)(1)(5)(1)(1)(1)一个球体的内接正方体的边长等于球体半径的多少倍?_百度作业帮
一个球体的内接正方体的边长等于球体半径的多少倍?
一个球体的内接正方体的边长等于球体半径的多少倍?
正方体的对角线就是球体的直径嘛,比值是2倍的根号3除3【图】正方体球体素描图欣赏 学习几何体的结构素描学习素描应遵循由浅入深、循序渐进的原则,石膏几何体概括了自然界各种不同的形体。从研究石膏几何体和静物着手,是素描入门的开始。研究几何体,便于理解......
学习素描应遵循由浅入深、循序渐进的原则,石膏几何体概括了自然界各种不同的形体。从研究石膏几何体和静物着手,是素描入门的开始。研究几何体,便于理解物体的形体结构和在空间中的透视原理,便于理解物体的明暗调子和立体感。素描这些最基本的规律,也贯串在其它一切复杂的形体中间,几乎包含了素描造型的各种关系。通过对几何形体的理解和描绘,可以培养表现各种复杂形体的概括能力,为进一步学习素描打下基础。我们今天先画一下石膏几何体的结构素描!球体的描绘 & &&圆球体与立方体相比较两者有着强烈的反差,圆球体的结构特征与立方体刚直的形态对立。完全是由弧形构成的,给人以柔美、圆润、含蓄而灵动的感觉。自然界中的一切物象均可以概括成立方体和圆球体这两种基本形态,也可以说立方体和圆球体是自然界中两种最基本的形态,两者的对立关系也完全符合“世界上的一切事物都是处于矛盾着的统一体之中”的这一基本规律。矛盾着的事物在一定的条件下又是可以相互转让,方中寓圆,圆中有方,这两种视觉形象为我们认识世界提供了符号化的客观依据。&圆球体的结构关系,要比方体复杂得多了,为了便于了解我们还是要对圆球体的结构关系加以概括,便于理解其形态构造。圆球体的绘画 1. 首先画一个正方形,画出对角线,找出一个交点为圆球体的圆心点,通过此圆心点作水平线和垂直线,找出圆球体外轮廓线与正方形相切的四个切点,圆球体的外轮廓就画出来了。那么如何才能画出圆球体的立体感呢?在画圆球体立体感前,我们首先还要了解一下圆的透视变化,画圆的透视,要借助于正方形的透视关系。如图所示,这是几种情况下圆的透视关系。样,圆球体的外轮廓就画出来了。
没有相关文章 上一篇文章: 下一篇文章:}

我要回帖

更多关于 不可能的立方体 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信