爱情鸟第一论坛com高清免费_91免费精品国自产拍在线可以看_亚洲一区精品中文字幕_男人操心女人的视频

代做COMP27112、代寫Java語言程序

時間:2024-03-08  來源:  作者: 我要糾錯



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.
請加QQ:99515681  郵箱:99515681@qq.com   WX:codehelp 

標簽:

掃一掃在手機打開當前頁
  • 上一篇:SCC312代做、代寫Java編程語言
  • 下一篇:代寫CSC8208、Java/c++編程語言代做
  • 無相關信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風景名勝區
    昆明西山國家級風景名勝區
    昆明旅游索道攻略
    昆明旅游索道攻略
  • 短信驗證碼平臺 理財 WPS下載

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    爱情鸟第一论坛com高清免费_91免费精品国自产拍在线可以看_亚洲一区精品中文字幕_男人操心女人的视频
    <strike id="bfrlb"></strike><form id="bfrlb"><form id="bfrlb"><nobr id="bfrlb"></nobr></form></form>

        <sub id="bfrlb"><listing id="bfrlb"><menuitem id="bfrlb"></menuitem></listing></sub>

          <form id="bfrlb"></form>

            <form id="bfrlb"></form>

              <address id="bfrlb"></address>

              <address id="bfrlb"></address>
              久久国产精品毛片| 国内精品伊人久久久久av一坑| 国产麻豆日韩欧美久久| 午夜亚洲福利在线老司机| 国产精品国产三级欧美二区| 亚洲女人小视频在线观看| 欧美视频中文字幕| 精东粉嫩av免费一区二区三区| 国产欧美婷婷中文| 欧美成人午夜77777| 校园激情久久| 国产精品久久久| 欧美日本高清视频| 老司机久久99久久精品播放免费| 欧美精品一区二区高清在线观看| 国产精品乱码人人做人人爱| 亚洲免费一区二区| 亚洲伦理中文字幕| 欧美成人a视频| 国产日韩在线看| 久久精品在线| 一区二区三区在线不卡| 欧美 日韩 国产一区二区在线视频| 亚洲第一精品夜夜躁人人躁| 嫩草国产精品入口| 欧美区高清在线| 在线视频一区观看| 国产日韩一区二区三区| 一区二区在线观看视频在线观看| 欧美特黄a级高清免费大片a级| 欧美日韩国产欧美日美国产精品| 激情懂色av一区av二区av| 日韩亚洲精品在线| 久久视频一区| 国产精品美女久久久久aⅴ国产馆| 91久久精品国产| 免费在线国产精品| 国产一区二区成人| 欧美一区亚洲一区| 亚洲在线免费观看| 国产麻豆9l精品三级站| 久久久久久久成人| 欧美日韩国产精品成人| 国产女精品视频网站免费| 亚洲免费视频在线观看| 欧美一区二区三区在线看| 欧美日韩国内自拍| 韩国v欧美v日本v亚洲v| 亚洲开发第一视频在线播放| 久久国产精品久久国产精品| 欧美成人xxx| 欧美午夜激情视频| 久久激情久久| 麻豆精品一区二区av白丝在线| 国产精品一区二区黑丝| 欧美日韩第一区| 国产精品你懂的在线| 久久精品91| 老牛影视一区二区三区| 国产精品久久中文| 久久精品人人做人人爽| 亚洲无玛一区| 快she精品国产999| 女主播福利一区| 亚洲国产精品一区二区尤物区| 亚洲精美视频| 亚洲理论在线观看| 久久久久久九九九九| 久久久爽爽爽美女图片| 激情小说亚洲一区| 国产精品久久久久av免费| 欧美一区在线看| 亚洲午夜av| 欧美日韩色综合| 欧美色精品在线视频| 欧美一区二区三区播放老司机| 久久人体大胆视频| 国产在线拍揄自揄视频不卡99| 欧美日韩国产一区| 国产精品剧情在线亚洲| 久久久久这里只有精品| 国产日韩欧美精品综合| 另类av一区二区| 亚洲天堂成人在线观看| 欧美激情 亚洲a∨综合| 亚洲乱码国产乱码精品精98午夜| 欧美成人精品在线观看| 国产精品av久久久久久麻豆网| 国产性做久久久久久| 欧美一区二区三区四区在线| 日韩一本二本av| 国产在线精品自拍| 欧美激情久久久久久| 日韩视频一区二区在线观看| 欧美日韩在线一二三| 一区二区三区高清在线观看| 欧美xart系列高清| 国产一区二区三区在线播放免费观看| 久久精品国产999大香线蕉| 亚洲已满18点击进入久久| 黄色av成人| 国产一区二区三区高清在线观看| 国产日韩欧美综合精品| 欧美在线观看一二区| 国产亚洲成av人在线观看导航| 黄色一区二区在线| 国产精品日本| 亚洲精品欧洲精品| 国产精品激情偷乱一区二区∴| 欧美国产在线电影| 伊人久久大香线蕉av超碰演员| 樱桃视频在线观看一区| 国产精品综合av一区二区国产馆| 久久久精品国产免费观看同学| 亚洲一级电影| 亚洲一区二区3| 亚洲成在线观看| 国产精品五区| 欧美国产日本韩| 国产在线拍揄自揄视频不卡99| 亚洲精品一品区二品区三品区| 国产一区二区黄| 牛牛影视久久网| 蜜臀a∨国产成人精品| 亚洲欧洲一区二区天堂久久| 欧美片在线观看| 欧美在线首页| 久久精品视频在线免费观看| 久久久综合精品| 亚洲精品少妇| 亚洲影院在线| 亚洲女人天堂av| 99综合电影在线视频| 亚洲高清在线视频| 国产欧美精品一区aⅴ影院| 亚洲最新视频在线| 国产精品美女黄网| 国产精品成人观看视频国产奇米| 国产精品私人影院| 国模一区二区三区| 激情成人综合网| 欧美日韩一区三区四区| 国产精品午夜国产小视频| 欧美亚洲第一页| 午夜欧美理论片| 久久综合网色—综合色88| 午夜视频一区在线观看| 亚洲无线观看| 在线观看亚洲视频啊啊啊啊| 欧美一区观看| 国产精品美女久久久免费| 欧美日韩精品系列| 伊人天天综合| 欧美国产日韩免费| 在线免费观看日本欧美| 国产精品久久97| 在线观看日韩国产| 国产一区视频网站| 欧美日韩精品免费看| 亚洲午夜久久久久久尤物| 亚洲黄色性网站| 国产精品久久网| 99re热这里只有精品免费视频| 影音先锋亚洲一区| 欧美在线高清视频| 亚洲精品在线观看免费| 在线国产精品一区| 在线欧美视频| 亚洲女同同性videoxma| 亚洲欧美激情视频| 麻豆精品一区二区av白丝在线| 亚洲精品一区二区三区在线观看| 亚洲人成网站在线播| 欧美色视频日本高清在线观看| 国产欧美成人| 久久久女女女女999久久| 久久婷婷久久| 欧美午夜寂寞影院| 欧美日韩三级在线| 美玉足脚交一区二区三区图片| 久久综合九色99| 亚洲美女在线观看| 影音先锋中文字幕一区二区| 免播放器亚洲| 亚洲自拍高清| 国产精品久久久久久久久久免费看| 亚洲欧洲精品一区二区精品久久久| 国产亚洲精品高潮| 国产一区二区三区在线观看网站| 国产尤物精品| 欧美日韩一区二区三区视频| 麻豆av一区二区三区久久| 久久综合亚州| 亚洲视频 欧洲视频| 欧美日韩国产一区二区三区地区| 精品av久久707| 国产一区二区三区在线免费观看| 久久久久成人精品| 久久成人免费网| 亚洲欧美日韩在线|