forreachで配列の値をとりだす2 メモ
問題
2000円以下の商品を価格が高い方から順に並べ替えて
print_rで出力するプログラムを書いてみましょう。
入力される値
ショートソード,1200
ロングソード,2000
ブレードソード,2500
バスタードソード,3000
木の盾,700
銅の盾,1500
鉄の盾,2200
<?php
// 標準入力から値をループで取得
while($input = trim(fgets(STDIN))){
// カンマで分割
$key_value = explode(",", $input);
$key = $key_value[0];
$value = $key_value[1];
// 連想配列として$itemに代入
$item[$key] = $value;
}
// ここから下に記述
// 2000円以下の商品を価格が高い方から順に並べ替えて
// print_rで出力するプログラムを書いてみましょう。
foreach($item as $key => $value){
if($value <= 2000){
$item_list[$key] = $value;
}
}
arsort($item_list);
print_r($item_list);
?>
まずforreach文の中に値が2000以下の商品をif文で条件をつける
if文の中の処理を$item_listの配列の中にkeyとvalueを入れていき、ここで2000円以下の
itemを格納
そのあとforeach文の外でarsort()で値をソートし、pirnt_r()で出力
期待する出力値
Array
(
[ロングソード] => 2000
[銅の盾] => 1500
[ショートソード] => 1200
[木の盾] => 700
)
ぶっちゃけとけませんでした。連想配列苦手
今日は暑かった
どうもおいもです。
シェーダー言語よりバッファリングをやるべきだと気づいたのでそっちについて読みふけてました。
とりあえず簡単にまとめたのでメモしときます
バッファリング
バッファリングはバッファオブジェクトを利用して点や線、三角形などの形状を描画すること。
バッファーとして利用するattribute変数の宣言→バッファーに配置する頂点データの指定→点集合の生成
attribute変数の種類
position: 各頂点の頂点座標
color: 各頂点の頂点色
normal: 各頂点の法線ベクトル
uv: 各頂点のテクスチャ座標
index: どの頂点を利用するかを指定するインデックス配列
バッファーオブジェクトの頂点データの更新
一度変更したattribute変数を動的に変更するには、attribute変数の宣言時に「dynamic」プロパティをtrueにする。
paticles.geometry.attributes.position.needsUpdate(): 頂点座標を更新したことをGPUに通知するためのフラグ
フォン反射材質を利用した三角形オブジェクト
反射系材質を適用するには頂点座標を加えて法泉ベクトルを設定しなくてはならない。
まだまだあるけどとりあえず一部おいておく
あとCODEPEN使ってサンプルdemoとかのせたいけどまだ使い方わからなくて投稿ができないおわた。
シェーダ言語
おはこんばんにちわ おいもです
今日はシェーダー言語について勉強しました。
まず簡単にシェーダー言語ていうのはライティングやシャドーを処理するための言語らしい。んでwebGLで動作するシェーダー言語がGLSL ESを習得しなきゃならないみたい。つらいね。
んでGLSL ESを使うためにバーテックスシェーダーとフラグメントシェーダーの2つのプログラムで構成されていると・・・。
バーテックスシェーダーはメインメモリからグラフィックメモリに送られた3次元オブジェクトを構成している頂点座標とか頂点色とかテクスチャ座標とかそのオブジェクトの位置や回転、設定したカメラとかのパラメーターから算出される行列を用いて2次元平面上での頂点座標を決める。
フラグメントシェーダーは光源パラメーター(たぶんライトとか)法泉ベクトル、頂点色とかの2次元平面のスクリーン上の各ピクセルごとの色を決定する
大まかな流れとしては
Javascript(カメラ、3次元オブジェクト、状態(回転とか)、光源)
↓
バーテックスシェーダー(頂点座標の決定)
↓
フラグメントシェーダー(ピクセル色の決定)
↓
画面出力
ていう概念図です。はい
わけわからんね。
んでそのバーテックスシェーダーやフラグメントシェーダーを演算するためのプロパティやシェーダープログラムの入力と出力をするみたいなんだけど今日はこの辺で終わっておきます。
またあしたー
早く夏きてほしい
さてタイトルとは別に今日やったこと
とりあえずバッファリングについて調べました。てかおととい前からしてる。
簡単にいえば頂点座標や頂点色とかをGPUに送ってハイパフォーマンスな描画ができる!とかいう優れものらしいですね。
今までただただCubegeometryとかをちょっと工夫して描画してキャッキャッしてたけど
なんか新しい単語?プロパティとかでてきてわけわからないですね。
そもそも座標とか頂点とか急にでてきたからわからない。
でもバッファリングとシェーダー言語を理解して習得しないと次のLVにあがれないと思うからとりあえずするしかないですよねー。
でも理解したらなかなかおもしろいものを作ると思うからがんばりたいところではある。
three.jsの公式にあるDEMO作品を見ながら模写したりして自分になり調べてわからないところはとりあえずおいておいてみたいなことを一日して終わった。
(見たのはこれ↓)
他にもあるけどこの基礎てきなところとか抑えておきたいよなー。
身近に教えてくれる人がほしい今日このごろ・・・。