生きるのにポジティブな希望ってどうやったら持てるの
ちがうよぜんぜんちがうよこれは引用じゃなくて本音だよ!
割と簡単にマンデルブロ集合が描けてしまった
- 作者: B.マンデルブロ
- 出版社/メーカー: 筑摩書房
- 発売日: 2011/02/08
- メディア: 文庫
- 購入: 1人 クリック: 31回
- この商品を含むブログ (15件) を見る
- 作者: B.マンデルブロ
- 出版社/メーカー: 筑摩書房
- 発売日: 2011/02/08
- メディア: 文庫
- クリック: 12回
- この商品を含むブログ (9件) を見る
「読まなくてもいい本」の読書案内:知の最前線を5日間で探検する (単行本)
- 作者: 橘玲
- 出版社/メーカー: 筑摩書房
- 発売日: 2015/11/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (9件) を見る
理系の人間には割と常識なのかもしれないけど
この複雑な図がたったの2行の数式で描けるんだよ
C#だけどユーザコントロールとかフォームとか使わないver
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Drawing; using OpenTK; using OpenTK.Graphics; using OpenTK.Graphics.OpenGL; using OpenTK.Input; namespace opentktest { static class Program { //表示領域の縦幅 static readonly double _Height = 4.0; //注視点 static readonly Vector2 _CentralPoint = Vector2.Zero; //まんでるぶろ集合描画時の色リスト static readonly List<Color> _ColorList = new List<Color>(); static void InitializeColorList() { _ColorList.Add(Color.Black); for (int i = 1; i <= 16; ++i) { int x = 31 + 14 * i; _ColorList.Add(Color.FromArgb(x, x, x)); } } static void SetProjection(int width,int height) { // ビューポートの設定 GL.Viewport(0, 0, width, height); // 変換行列の初期化 GL.LoadIdentity(); // 描画領域の設定 double sideY = _Height * 0.5; double sideX = sideY; GL.Ortho(_CentralPoint.X - sideX, _CentralPoint.X + sideX, _CentralPoint.Y - sideY, _CentralPoint.Y + sideY, -1.0, 1.0); } static void DrawMandelbrot(double xMin, double xMax, double yMin, double yMax, int screenWidth, int screenHeight) { double xDiff = xMax - xMin, yDiff = yMax - yMin; ++screenWidth; ++screenHeight; GL.Begin(BeginMode.Points); for (int i = 0; i < screenWidth; ++i) { double x = xMin + xDiff * (double)i / (double)screenWidth; for (int j = 0; j < screenHeight; ++j) { double y = yMin + yDiff * (double)j / (double)screenHeight; GL.Color3(_ColorList[Mandelbrot(x, y, 16)]); GL.Vertex2(x, y); } } GL.End(); } static int Mandelbrot(double re, double im) { return Mandelbrot(re, im, 16); } static int Mandelbrot(double re, double im, int nMax) { double x = 0.0, y = 0.0, x1, y1; for (int n = 0; n < nMax; ++n) { x1 = x * x - y * y + re; y1 = 2.0 * x * y + im; if (x1 * x1 + y1 * y1 > 4.0) { return n + 1; } x = x1; y = y1; } return 0; } /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { InitializeColorList(); using(var game = new GameWindow()) { game.Load+=(sender,e)=> { game.VSync = VSyncMode.On; GL.ClearColor(Color4.Red); SetProjection(game.Width, game.Height); }; game.Resize += (sender, e)=> { SetProjection(game.Width, game.Height); //GL.Viewport(0,0,game.Width,game.Height); }; game.UpdateFrame+=(sender,e)=> { if(game.Keyboard[Key.Escape]) { game.Exit(); } }; game.RenderFrame += (sender, e) => { GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); GL.PointSize(1.0f); double sideY = _Height * 0.5; double sideX = sideY; DrawMandelbrot(_CentralPoint.X - sideX, _CentralPoint.X + sideX, _CentralPoint.Y - sideY, _CentralPoint.Y + sideY, game.Width, game.Height); game.SwapBuffers(); }; game.Run(60.0); } } } }
via:
[C#][OpenTK] マンデルブロ集合の描画 - クソネミ( ˘ω˘ )
Chapter 0: Learn OpenTK in 15' | OpenTK
世の中にはな、バージョン管理システムを使わない文化もあるんだよ!
ネットにもつながない。完全にスタンドアローンだ。
だからXPを現役で使えるんだな。
メリットは特にない。
なんだかぼくら落ち着くところに落ち着いてしまったな
ちょっとイヤなことがあると「閉鎖します」と宣言して、閉鎖・移転を繰り返すサイトが少なからずあったし、それに対して、取り巻きたちが「閉鎖なんて悲しいです!」とコメント欄に書き込む。
そのコール&レスポンスには、様式美のようなものがあった。
4月1日のネタとして、「閉鎖します」をやる人がいなくなってから、もう何年経つのだろうか。
サイトやブログにとっての「閉鎖」というのはプチ自殺みたいなもので、自分の葬式に参列できないことの代用なのかもしれない。
しかし、いまや、インターネットでも「閉鎖芸」みたいなものの居場所はなくなってしまった。
僕それ知ってる
twitter
twitterでしょっちゅう垢消しやってる人がいてtwittterって垢消しても1ヶ月いないなら復活できるからぼくも経験あるから知ってるんだけど
twitterでしょっちゅう垢消しやってるけどtwitterからは出てかないの
なんだかんだいって居心地がいいんだろうなぁ
クライアントにミュート機能があって読みたくない人は自分の投稿を読まないで済ませられる
それがなんというか気楽(と同時にぼくがtwitterから離れつつある原因だ)
TwitterとかSNSが台頭する前は掲示板とかチャットとか過疎ってる個人サイト持つとか、そういう場所に発散するしかなかった
誰もが読む可能性のある場所と言い換えてもいい
twitterの登場でぼくが何を感じたかというと「ようやく楽に息ができるぞ」
twitterが登場する前はなんだかネット全体が息苦しかった感あるよなぁ
「嫌なら読むな」
「読まれる場所に書くな」
というお互いにいがみ合う緊張感みたいなものがあった
その典型が「半年ロムれ」だろう
ネットvs.リアルの衝突―誰がウェブ2.0を制するか (文春新書)
- 作者: 佐々木俊尚
- 出版社/メーカー: 文藝春秋
- 発売日: 2006/12
- メディア: 新書
- クリック: 66回
- この商品を含むブログ (108件) を見る
だから
昔は必死で居場所を探してたのに今じゃ落ち着くところに落ち着いてしまったな感がある
Noteで自殺すると書いた記事が盛り上がってたの知らなかったもん
へーそんなことがあったんだ
どうりで最近自殺エントリが多かったわけだ(深追いする気はない)
ヒトデさえ重い荷物抱えているのね
なんだか生きるのが楽になったきがする
- 作者: 窪美澄
- 出版社/メーカー: 新潮社
- 発売日: 2012/09/28
- メディア: 文庫
- 購入: 3人 クリック: 24回
- この商品を含むブログ (43件) を見る
- 作者: 森絵都
- 出版社/メーカー: 文藝春秋
- 発売日: 2009/04/10
- メディア: 文庫
- 購入: 7人 クリック: 77回
- この商品を含むブログ (107件) を見る
__FILE__が絶対パスになるのをどうにかしたい
久しぶりに技術ネタです
ずっとC#いじってたからC言語
「不便!」
C#だと一発で出来ることが小細工をしないとできなかったりするんですよ。
たとえば文字列の操作。
開発環境によって独自に文字列型定義しちゃったりしてるからそのままだと標準ライブラリ呼べないし
でもそれでもchar*なんかより全然便利だったりして。
フルパスからファイル名だけ抜き出したいときどうするの?
調べたら標準ライブラリですごいかんたんに実装できる。
#define FILE (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
これだけ
えっ?
このstrchr関数、調べてみると
文字列 s において文字 c が最後に見つかった位置をポインタで返却します。 見つからなかったときにはNULLを返却します。
文字列終了コードの'\0'も文字列の一部と見なします。つまり、strrchr(s, 0); も可能です。
strrchr
だそうです。
せっかくなので実装してみる
ちなみにうちの環境じゃフォルダの区切り文字は\\だった
#include
#include
#define FILE (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)int main() {
char* dirpath;dirpath = FILE;
printf("%s",dirpath);
return 0;
}
そんな感じ!
via:
http://d.hatena.ne.jp/shouh/20131105/1383653323
d.hatena.ne.jp