質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

Q&A

0回答

938閲覧

JavaScript投げ上げたボールの反射

chums

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

0グッド

1クリップ

投稿2021/05/17 22:05

編集2021/05/18 01:40

JavaScriptです。

投げ上げた物体が自由落下して床面で弾む
様子をシミュレーションするスクリプトを作成したいです。.
three.jsでしてます。

発生している問題・エラーメッセージ

球を投げ上げてからそのまま落下してしまいます。
投げ上げ→落下→弾みにしたいです。
今は投げ上げ→落下のままなので弾みを加えたいです。

x_k(y座標)がもし負になるようだったら速度を反転する
的なものを追加すると思うのですが…

JavaScript

1<!DOCTYPE html> 2 3<html> 4 5<head> 6 <title>Sample5_3</title> 7 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r121/three.js"></script> 8 <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.js"></script> 9 <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/three@0.101.1/examples/js/controls/OrbitControls.js"></script> 10 <script src="myMatrix.js"></script> 11 <style> 12 body { 13 /* set margin to 0 and overflow to hidden, to go fullscreen */ 14 margin: 0; 15 overflow: hidden; 16 } 17 </style> 18</head> 19<body> 20 21<div id="Stats-output"> 22</div> 23<!-- Div which will hold the Output --> 24<div id="WebGL-output"> 25</div> 26 27<!-- Javascript code that runs our Three.js examples --> 28<script type="text/javascript"> 29 30 // once everything is loaded, we run our Three.js stuff. 31 function init() { 32 33 var dt = 1/60, //サンプリングタイム 34 x_k = [[0], [10]]; //xの初期値 35 36 var stats = initStats(); 37 38 // create a scene, that will hold all our elements such as objects, cameras and lights. 39 var scene = new THREE.Scene(); 40 41 // create a camera, which defines where we're looking at. 42 var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000); 43 44 const controls = new THREE.OrbitControls(camera); 45 46 // create a render and set the size 47 var renderer = new THREE.WebGLRenderer(); 48 49 renderer.setClearColor(new THREE.Color(0xEEEEEE)); 50 renderer.setSize(window.innerWidth, window.innerHeight); 51 renderer.shadowMap.enabled = true; 52 53 // create the ground plane 54 var planeGeometry = new THREE.PlaneGeometry(2, 2, 1, 1); 55 var planeMaterial = new THREE.MeshLambertMaterial({color: 0xffffff, side: THREE.DoubleSide}); 56 var plane = new THREE.Mesh(planeGeometry, planeMaterial); 57 plane.receiveShadow = true; 58 59 // rotate and position the plane 60 plane.rotation.x = -0.5 * Math.PI; 61 plane.position.x = 0; 62 plane.position.y = 0; 63 plane.position.z = 0; 64 65 // add the plane to the scene 66 scene.add(plane); 67 68 // create the sphere 69 var sphereGeometry = new THREE.SphereGeometry(0.1, 20, 20); 70 var sphereMaterial = new THREE.MeshLambertMaterial({color: 0x777777}); 71 var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial); 72 73 // position the sphere 74 sphere.position.x = 0; 75 sphere.position.y = 0; 76 sphere.position.z = 0; 77 sphere.castShadow = true; 78 79 scene.add(sphere); 80 81 // position and point the camera to the center of the scene 82 camera.position.x = -6; 83 camera.position.y = 3; 84 camera.position.z = 6; 85 camera.lookAt(scene.position); 86 87 // add subtle ambient lighting 88 var ambientLight = new THREE.AmbientLight(0x0c0c0c); 89 scene.add(ambientLight); 90 91 // add spotlight for the shadows 92 var spotLight = new THREE.SpotLight(0xffffff); 93 spotLight.position.set(-2, 3, -0.5); 94 spotLight.castShadow = true; 95 scene.add(spotLight); 96 97 // add the output of the renderer to the html element 98 document.getElementById("WebGL-output").appendChild(renderer.domElement); 99 100 // call the render function 101 renderScene(); 102 103 function renderScene() { 104 stats.update(); 105 106 sphere.position.y = x_k[0][0]+ 0.1/2; 107 108 x_k = runge_kutta(x_k); 109 110 111 112 113 114 // render using requestAnimationFrame 115 requestAnimationFrame(renderScene); 116 renderer.render(scene, camera); 117 } 118 119 function initStats() { 120 var stats = new Stats(); 121 stats.setMode(0); // 0: fps, 1: ms 122 // Align top-left 123 stats.domElement.style.position = 'absolute'; 124 stats.domElement.style.left = '0px'; 125 stats.domElement.style.top = '0px'; 126 document.getElementById("Stats-output").appendChild(stats.domElement); 127 return stats; 128 } 129 130 function runge_kutta(x_k) { 131 var k1 = scalar_matrix(dt, func(x_k)); 132 var k2 = scalar_matrix(dt, func(add_matrix(x_k, scalar_matrix(1/2, k1)))); 133 var k3 = scalar_matrix(dt, func(add_matrix(x_k, scalar_matrix(1/2, k2)))); 134 var k4 = scalar_matrix(dt, func(add_matrix(x_k, k3))); 135 var x_k1 = add_matrix(x_k, scalar_matrix(1/6, add_matrix(add_matrix(k1, scalar_matrix(2, k2)), add_matrix(scalar_matrix(2, k3), k4)))); 136 return x_k1; 137 } 138 139 //導関数 140 function func(x) { 141 var M = 0.5, 142 C = 0.2, 143 f = [[0], [0]]; 144 f[0][0] = x[1][0]; 145 f[1][0] = -9.8 - C/M*x[1][0]; 146 return f; 147 } 148 149 } 150 window.onload = init; 151</script> 152</body> 153</html>

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/05/18 00:02

コードはマークダウンのcode機能を利用してご提示ください。 やりかけのようになっています。投稿前にプレビュー確認してから。 あと、JavaではなくJavaScriptでは。
chums

2021/05/18 00:18

ご指摘ありがとうございます。
m.ts10806

2021/05/18 00:35

タイトルや質問タグのほうが検索観点では重要です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問