日本欧洲视频一区_国模极品一区二区三区_国产熟女一区二区三区五月婷_亚洲AV成人精品日韩一区18p

代做COMP27112、代寫Java語言程序

時(shí)間:2024-03-08  來源:  作者: 我要糾錯(cuò)



Introduction to Visual Computing
Coursework Assignment 2
Sun, Planet and Moon
Tim Morris
Introduction
The aim of this exercise is to render a simple solar system with one moon orbiting one
planet orbiting one sun. As with the previous exercise, you’ll need a web browser to display
the output and a simple text editor1 to create the html file you’ll need.
This piece of work contributes half of the coursework assessment. We suggest that you
should not spend more than 15 hours in total completing Assignments 1 and 2.
Getting Started
Start off with the same code as last time for creating the basic webpage. Under “// Your
Javascript will go here.” you’ll add any global variables and calls to two
functions, init() and animate().
Creating the Scene (init();)
Everything is initialised in this function.
As before, add a scene, camera and renderer and add the renderer to the
document (don’t forget to declare the scene, camera and renderer as global
variables). You won’t need a vertex shader or fragment shader this time.
Put the far plane of the camera at 10000. Locate the camera at (0, 30, 500) and add it to the
scene.
You’ll need to create nine variables for the sun’s, earth’s and moon’s geometries, materials
and meshes. These are global variables.
You can create the sun object using the following code:
1 You should ensure that your text editor saves your html files as plain text. Some editors (e.g. TextEdit on the
Mac add all kinds of stuff to what you think is a plain html file, meaning that you just see the text of your file
when you open it in your browser. Don’t forget to give your files the correct extension.
You could also use a suitable IDE.
sunGeometry = new THREE.SphereGeometry(109, 400, 200);
sunMaterial = new THREE.MeshStandardMaterial(
 {
 emissive: 0xffd700,
// emissiveMap: texture,
 emissiveIntensity: 1,
 wireframe: false
 }
);
sunMesh = new THREE.Mesh(sunGeometry, sunMaterial);
scene.add(sunMesh);
This creates a spherical object (what do the arguments mean?) of a particular colour. Where
is it located? The emissiveMap is something you may use later.
The sun must be a source of light. The PointLight() constructor can achieve this.
Create a point light source of white light at the origin and add it to the scene. You might also
add a diffuse light to give some background illumination, use AmbientLight().
Obviously this is physically unrealistic but it makes the objects more visible.
You can create the earth and moon using similar code with the following differences:
• The earth sphere geometry arguments are 25, 50, 50
• The moon sphere geometry arguments are 5, 40, 20
• Both the earth and moon materials are MeshPhongMaterial, they don’t have an
emissive argument, but do have a color. You can experiment with color
values.
The texture argument might be used later. So the earthMaterial can be created
using something like:
earthMaterial = new THREE.MeshPhongMaterial(
 {
// map: texture,
 color: x0000ff
 }
The earth and moon will be grouped together into one object before being added to the
scene. To do this we need a global variable to store the earth-moon system, we need to
add the earth to it, by default it will go to the origin of this system. Then we need to add the
moon to the system and set its position relative to the earth.
Three.js provides a group object for storing collections:
earthSystem = new THREE.Group();
Then the earth (and moon) can be added to this in a manner that was similar to the way we
added the sun to the scene:
earthSystem.Add(earthMesh);
Don’t forget to set the position of the moon within the earth-moon system, using a function
something like:
moonMesh.position.set(orbitRadius, 0, 0);
A suitable value for orbitRadius is in the range 40 – 60.
The earth’s orbit could be approximated as a circle, and the location of the earth on it could
be computed as the following pseudocode:
earth.position.x = earthOrbitRadius * sin(2pwt);
earth.position.y = earthOrbitRadius * cos(2pwt);
w is the earth’s angular velocity and t is some measurement of time.
It is slightly more realistic to make the orbit an ellipse. To make this more efficient we precompute the co-ordinates of the earth’s orbit. Create a global variable with a suitable name.
The points can be computed by calling the function EllipseCurve. This has arguments
to define:
• The x co-ordinate of the centre point of the ellipse
• The y co-ordinate of the centre point of the ellipse
• The radius of the ellipse in the x direction
• The radius of the ellipse in the y direction
• The start angle for drawing the ellipse (in this case 0 radians)
• The end angle for drawing the ellipse (in this case 2p radians)
• Plus other arguments that can take default values.
You may choose to draw the orbit, in which case you will have to
• Transfer points from the orbit into a line buffer
• Create a geometry (using BufferGeometry) from these points
• Create a material (using LineBasicMaterial) and setting a suitable colour
• Create a line object using the geometry and material
• Rotate the line so it lies in the XZ plane instead of the default XY plane
• Add it to the scene
Animation (Animate();)
The basic animation function will contain the two lines to render the scene and request an
animation frame, as in the previous exercise. If you’ve followed the instructions so far and
now implement this, you’ll see a static scene with the sun, earth and moon in fixed positions
and the earth orbit (if you chose to draw it). The earth and moon should be solid coloured
spheres. The next step is to add movement to the objects. The following code should be
added to Animate() before the two lines you’ve just written.
The sun’s movement is simple. It doesn’t move. You might want to make it rotate if you add
a texture to it, which will be done later.
The earth-moon system’s position could be driven by using a counter that is incremented
for each frame of the animation. But we’ll use the time instead. A time can be obtained by
calling performance.now(). This gives the time in milliseconds since the browser
window was opened. This can be converted into a value in the range [0, 1) which will be
used as an index into the values of the EllipseCurve you defined earlier. In
pseudocode:
time = 0.00001 * performance.now();
t = (time mod 1)
We can get the earth-moon position by reading a point from the EllipseCurve object
(assume it’s called curve):
point = curve.getPoint(t)
Then the earthSystem’s x and z positions can be set to point.x and point.y
respectively. Changing the value of the multiplier (0.00001) will change the earth’s orbital
speed.
The moon’s position is set according to
moon.x = orbitRadius*cos(time*speed)
moon.z = orbitRadius*sin(time*speed)
Time was derived above. Speed is the orbital speed of the moon – you choose a sensible
value.
Optional Enhancements
Some optional enhancements follow.
Changing the viewpoint
It is possible to change the observer’s viewpoint by adding the following controls.
Insert the following line after the other import statement.
import { OrbitControls } from
"https://web.cs.manchester.ac.uk/three/three.jsmaster/examples/jsm/controls/OrbitControls.js";
Add a global variable with a suitable name, possibly controls.
Add the following two lines to the init() function:
controls = new OrbitControls(camera, renderer.domElement);
controls.autoRotate = true;
These add a controller to the scene and allow you to move the viewpoint by clicking and
dragging.
Texturing
The sun, earth and moon can be textured using textures from
https://www.solarsystemscope.com/textures/download/2k_sun.jpg
https://upload.wikimedia.org/wikipedia/commons/a/ac/Earthmap1000x500.jpg
https://svs.gsfc.nasa.gov/vis/a000000/a004700/a004720/lroc_color_poles_1k.jpg
To read these you’ll have to create one texture loader
const loader = new THREE.TextureLoader();
Textures can be loaded using this
var texture = loader.load(‘filename’); OR
var texture = loader.load(‘URL’);
And added to the material of the object you’re creating, by uncommenting the line in the
example above where you created the sun object.
The earth and moon textures can be added similarly, except you’ll add the line
map: texture,
to the material constructor. You’ll also need to delete the color property.
The problem you may encounter when attempting to run the code is that the resource fails
to load, and you have an error message such as
Access to image at <source> from origin 'null' has been blocked by CORS policy
This is a security feature of most modern browsers. You can set up a server on your host to
overcome this problem. Instructions are widely available on the web, specifically here
https://threejs.org/docs/index.html#manual/en/introduction/How-to-run-things-locally
If you’re using Chrome you can alternatively install an extension that allows CORS cross
origin loading (https://chrome.google.com/webstore/detail/allow-cors-accesscontrol/lhobafahddgcelffkeicbaginigeejlf?hl=en). Or in Safari you can explicitly turn off the
CORS checking.
Rotations
You can make the sun, Earth and Moon rotate on their axes, much like the cube rotated in
the previous exercise. Make sure you choose an appropriate length of the “day”.
Clouds
You could add clouds to the Earth. Find a cloud image (e.g.
https://i.stack.imgur.com/B3c7G.jpg) and add it as a transparent texture to a sphere mesh
that is slightly larger than the Earth. Make it rotate slightly slower than the Earth.
Background
You can also create a starry background for the scene. Make a very large sphere mesh – to
make sure it’s big enough to contain everything. Add a texture image of the Milky Way:
https://cdn.eso.org/images/screen/eso0932a.jpg
Make the sphere visible from inside as well as outside by setting the side member of the
material to THREE.DoubleSide.
Submission
Once you have a working solution, capture a short video of your solution, no more than 15
seconds long. It must demonstrate all the properties of your solar system, and not so
quickly that the marker can’t see them clearly (you’ll be penalised for videos that have so
much zooming or camera movement that it’s impossible to see the earth or moon rotating).
ZIP this and your html and submit the file to the Lab 2 area in Blackboard.
Submissions that are not in the ZIP format will not be marked.
Marking Scheme
We will endeavour to mark your work in face-to-face sessions in the scheduled labs.
You will receive marks for:
• The objects being in appropriate locations and moving appropriately.
請(qǐng)加QQ:99515681  郵箱:99515681@qq.com   WX:codehelp 

標(biāo)簽:

掃一掃在手機(jī)打開當(dāng)前頁(yè)
  • 上一篇:SCC312代做、代寫Java編程語言
  • 下一篇:代寫CSC8208、Java/c++編程語言代做
  • 無相關(guān)信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國(guó)家級(jí)風(fēng)景名勝區(qū)
    昆明西山國(guó)家級(jí)風(fēng)景名勝區(qū)
    昆明旅游索道攻略
    昆明旅游索道攻略
  • NBA直播 短信驗(yàn)證碼平臺(tái) 幣安官網(wǎng)下載 歐冠直播 WPS下載

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網(wǎng) 版權(quán)所有
    ICP備06013414號(hào)-3 公安備 42010502001045

    日本欧洲视频一区_国模极品一区二区三区_国产熟女一区二区三区五月婷_亚洲AV成人精品日韩一区18p

              9000px;">

                        中文字幕一区二区在线观看 | 一区二区高清免费观看影视大全 | 欧美一级精品大片| 不卡大黄网站免费看| 日韩国产高清在线| 香蕉久久夜色精品国产使用方法 | 福利一区二区在线| 久久www免费人成看片高清| 日韩不卡在线观看日韩不卡视频| 亚洲综合久久久久| 亚洲永久免费视频| 午夜伦欧美伦电影理论片| 亚洲aⅴ怡春院| 免费美女久久99| 日本亚洲三级在线| 久久99久久精品| 国产乱淫av一区二区三区| 国产成人精品免费在线| 波多野结衣一区二区三区| av毛片久久久久**hd| av电影天堂一区二区在线观看| aaa亚洲精品一二三区| 一本到一区二区三区| 欧美久久久久免费| 亚洲精品一线二线三线| 国产喷白浆一区二区三区| 1区2区3区欧美| 五月婷婷综合在线| 国产乱一区二区| 91黄色免费看| 日韩精品在线看片z| 国产精品理伦片| 亚洲精品自拍动漫在线| 日韩电影免费在线看| 国产精品中文字幕日韩精品| 北岛玲一区二区三区四区| 欧美日韩日本视频| 亚洲国产精品ⅴa在线观看| 一区二区三区av电影| 日韩激情视频网站| 风间由美一区二区三区在线观看| 色www精品视频在线观看| 日韩欧美一级二级| 综合在线观看色| 久久精品国产99| 91福利在线看| 久久伊人蜜桃av一区二区| 亚洲综合久久久久| 国产成人一级电影| 欧美丝袜自拍制服另类| 久久婷婷国产综合精品青草| 亚洲国产精品久久一线不卡| 国产91精品精华液一区二区三区| 欧美日韩aaaaaa| 国产精品卡一卡二卡三| 精品一区在线看| 欧美在线色视频| 中文字幕一区免费在线观看| 九九九精品视频| 欧美日韩中文精品| 中文字幕一区免费在线观看 | 色婷婷av一区二区三区软件| 91精品国产乱码久久蜜臀| 国产精品三级视频| 麻豆精品蜜桃视频网站| 欧美色视频在线| 国产精品国产自产拍在线| 日本亚洲欧美天堂免费| 精品视频一区 二区 三区| 亚洲图片另类小说| 国产精品自产自拍| 日韩欧美在线影院| 亚洲超碰97人人做人人爱| 99久久精品国产毛片| 国产欧美日韩另类一区| 久久99精品久久久久| 日韩欧美成人午夜| 日韩高清国产一区在线| 欧美日韩国产123区| 亚洲va在线va天堂| 欧美日精品一区视频| 一区二区三区精品视频| 色婷婷精品大视频在线蜜桃视频| 中文字幕va一区二区三区| 高清久久久久久| 亚洲国产精品v| 成人亚洲精品久久久久软件| 国产欧美一区二区精品秋霞影院| 国产一区不卡视频| 国产女人aaa级久久久级| 丁香婷婷综合激情五月色| 国产亚洲福利社区一区| 国产精品99久久久久久有的能看| 国产无人区一区二区三区| 成熟亚洲日本毛茸茸凸凹| 国产偷国产偷精品高清尤物| 国产精品一区二区视频| 中文字幕乱码久久午夜不卡 | 国产黄人亚洲片| 中文字幕国产一区二区| 成人av网站免费| 综合久久一区二区三区| 色综合久久中文综合久久97| 一区二区三区蜜桃| 91精品黄色片免费大全| 免费不卡在线视频| 久久久www免费人成精品| 成人性生交大片免费看在线播放| 亚洲欧洲三级电影| 欧美美女一区二区三区| 麻豆精品一区二区| 国产精品你懂的| 欧美日韩中文字幕一区| 老色鬼精品视频在线观看播放| 久久婷婷一区二区三区| 91社区在线播放| 日本中文在线一区| 国产精品网站在线观看| 在线观看一区二区精品视频| 日韩黄色免费电影| 欧美韩国一区二区| 91久久香蕉国产日韩欧美9色| 日韩有码一区二区三区| 久久久久久久久一| 色www精品视频在线观看| 精品一区二区三区久久| 亚洲精品中文在线| 日韩午夜在线观看| av电影在线观看不卡| 精油按摩中文字幕久久| 亚洲激情图片qvod| 久久青草欧美一区二区三区| 在线观看三级视频欧美| 国产一区 二区| 日本怡春院一区二区| 91色|porny| 精品综合免费视频观看| 亚洲色图视频网站| 久久久.com| 日韩视频一区二区在线观看| 色婷婷综合久久久中文一区二区| 久国产精品韩国三级视频| 午夜影院在线观看欧美| 亚洲天堂av一区| 国产欧美精品一区| 日韩欧美亚洲国产另类| 在线精品观看国产| av在线一区二区| 成人午夜在线视频| 国产麻豆日韩欧美久久| 日韩av电影免费观看高清完整版 | 在线观看欧美精品| 成人sese在线| 国产原创一区二区| 老司机精品视频在线| 日日摸夜夜添夜夜添精品视频| 亚洲美女免费在线| 国产精品色一区二区三区| av男人天堂一区| 99久久免费国产| 99久久国产免费看| 成人一二三区视频| 成人免费高清视频在线观看| 国产一区二区精品久久99| 久久免费视频色| 久久精品视频在线免费观看| 久久久影视传媒| 久久综合久久综合九色| 精品国产a毛片| 精品久久久网站| 精品国一区二区三区| 精品国产污污免费网站入口 | 丁香激情综合国产| 国产成人无遮挡在线视频| 国产成人免费在线视频| 国产高清一区日本| 成人av资源网站| 日本韩国视频一区二区| 欧美吻胸吃奶大尺度电影| 欧美天天综合网| 欧美大胆人体bbbb| 欧美激情在线观看视频免费| 国产日产欧产精品推荐色| 国产亚洲一区二区三区在线观看| 国产三级精品在线| 中文在线一区二区| 一区二区三区精品在线观看| 亚洲不卡av一区二区三区| 六月丁香综合在线视频| 黑人巨大精品欧美一区| 国产成人免费网站| 在线免费观看视频一区| 欧美成人综合网站| 中文字幕的久久| 五月婷婷另类国产| 国产精品一区二区在线观看不卡 | 日韩电影一区二区三区| 久久99国产精品尤物| 国产成人夜色高潮福利影视| 91蜜桃免费观看视频|