5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LINQPadでグラフを表示する

Last updated at Posted at 2018-08-31

皆様こんにちは。
第1回目のUnity入学式が無事に終わってほっとしている山田です。
次は9月末の第2回目の準備しなきゃ。。

動機

平面の円周上にオブジェクトを等間隔で配置したい時に、ポジション(X座標とY座標)を自動で計算したい時があります。
そんな時にパラメータを変えてどんな感じになるか試したいのですが、ポジションを数値で見てもよくわからないので2次元グラフにプロットしてほしいと思いました。

ポジションを計算するコード

var angleDiff = 180f / 9;
var startAngle = 0f;
var radius = 4;
var distance = 0;

 var positions = Enumerable.Range(0, 10).Select(x =>
 {
 	var angle = (startAngle + angleDiff * x) * UnityEngine.Mathf.Deg2Rad;
 	return new 
	{
		XPos = radius * UnityEngine.Mathf.Cos(angle),
		ZPos = radius * UnityEngine.Mathf.Sin(angle) + distance
	};
 });

数値で見てもよくわからない例

Index X Position Y Position
1 4 0
2 3.76 1.37
3 3.06 2.57
4 2 3.46
5 0.69 3.94
6 -0.69 3.94
7 -2 3.46
8 -3.06 2.57
9 -3.76 1.37
10 -4 0

2次元グラフにプロットするとよく分かる例
SnapCrab_NoName_2018-8-31_12-28-31_No-00.png

LINQPad

LINQPadは無償で提供されているアプリケーションで、Linqや.NETのコードをインタプリタ的に実行できるツールです。
出力もグラフ表示などで出力することができます。
詳しくは以下の記事などを見てください。
LINQPadを使ってみよう
今日からはじめる LINQPad

DBに接続することもできるので、DBからSelectしてLinqでいい感じに集計してグラフ表示することもできます。
僕も以前Redisに接続してデータ表示や更新、追加するスクリプトをLINQPadで作ったことがあります。

LINQPadでグラフ表示

以下の様に書くだけでグラフ表示できます。

var angleDiff = 180f / 9;
var startAngle = 0f;
var radius = 4;
var distance = 0;

 Enumerable.Range(0, 10).Select(x =>
 {
 	var angle = (startAngle + angleDiff * x) * UnityEngine.Mathf.Deg2Rad;
 	return new 
	{
		XPos = radius * UnityEngine.Mathf.Cos(angle),
		ZPos = radius * UnityEngine.Mathf.Sin(angle) + distance
	};
 })
 .Chart(x => x.XPos, x => x.ZPos, LINQPad.Util.SeriesType.Point)
 .Dump();

SnapCrab_LINQPad 5_2018-8-31_12-41-36_No-00.png

なお、上記のコードを実行するためにはUnityEndine.dllのimportが必要になります。
QueryPropertiesでUnityEndine.dllの場所を追加します。
(UnityEndine.dllはUnityをインストールするとPCに追加されます。)

SnapCrab_Query Properties_2018-8-31_12-43-2_No-00.png

ChartのオプションをPointからLineに変更すると点ではなく線で表示してくれたりします。
便利ですね!

SnapCrab_LINQPad 5_2018-8-31_12-44-44_No-00.png

棒グラフも表示できます。
【.NET】LINQPadでお手軽にオブジェクトを可視化する

ちょっと情報が少なくてオプションなど探すのが困るのが残念です。
公式サイトにもうちょっと説明が欲しいですね。

では皆様良いLINQPadライフを!

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?