mruby から Lua を呼び出すための mruby-lua を書きました

mruby は、こちらでも述べられているように組み込み言語として広く使われている Lua を強く意識した実装になっています。 mruby も Lua もそれぞれ、他システムに組み込むのが簡単ということだけあって、多からず相互利用の試みは mruby が登... 続きを読む | シェアする

C++のクラス宣言の文法について

C++ビギナー向けに書いた文章です。 C++の入門書では、クラスの書き方を次のように教えているものが多いと思います。 class MyClass { // ... }; int main() { MyClass foo = new MyClas... 続きを読む | シェアする

FORTRANコードをCで使う

仕事で古い FORTRAN77 のコードを .NET Framework (C# アプリ)から呼ぶことになり、ビルドと呼ぶ手順について検証しました。それまで漠然としたイメージしかなかった FORTRAN を触れる良い機会だったので、覚え書き程度に一般的... 続きを読む | シェアする

OpenCASCADE 6.9.0 を LMDE でビルド

先日、自宅サーバの Debian GNU/Linux Jessie 32bit 版で OpenCASCADE 6.9.0 と siren をビルドしました。 自宅サーバは、SSH で外部からアクセスして開発ができるので便利である一方、オンボード Atom... 続きを読む | シェアする

OpenCASCADE 6.9.0 を Debian でビルド

先月の12日にリリースされた Open CASCADE の 6.9.0 をビルドしました。公式のロードマップでは 6.x 系列は 6.8 が最後で、次は 7.0 になるとの話だったはずですが、何だかんだで 6.9 がリリースされた模様。 v6.9 のリリ... 続きを読む | シェアする

グラフィックLCD風ディスプレイシミュレータ

去年の11月、フレームバッファに直接値を書き込んでプログラムからお絵描きがするような、手軽なプログラミングをやってみたい人向けに LCD 風ディスプレイシミュレータを書きました。 ある通常ファイルを /dev/fb0 のようなデバイスファイルに見立て、フ... 続きを読む | シェアする

VTL (Very Tiny Language)の実装を七行プログラミングで挑戦してみました

1970年代の中盤に開発された極小インタプリタ言語 VTL (Very Tiny Language) の基本的な演算構文を7行で書いてみました。 VTL に関しては、以下に詳しい記述があります。 VTL(Very Tiny Language)の作成 H... 続きを読む | シェアする

mruby: C++のクラスをラッピングしてRubyクラスとして使えるようにしてる途中

sirenの改修を行なっています。これはもともと、Open CASCADE の C# アプリケーションサンプルに含まれていた OCCTViewer クラスを参考にして組んだものがベースで、C# アプリケーションのコードとネイティブな DLL の間を取り継... 続きを読む | シェアする

siren のロゴを作ってみました

私個人がオープンソースで開発をしている三次元ベースの簡易 CAD システム「siren」のロゴを作成してみました。 今、自分が勤めている会社は海に関する仕事がメインで、マシンのホスト名やシステムの開発コード名に、海に関する用語をつけるのが慣例となっていま... 続きを読む | シェアする

OpenCASCADE で曲面を作成する

今回はいよいよ曲面を作成していきたいと思います。 平面までなら、なんとか独自に三次元幾何ライブラリーをこしらえて扱うことができるかもしれませんが、自由曲面を扱うシステムを組もうとすると、とても独自開発ではやっていけません。そんな時、OCCが力を発揮するわ... 続きを読む | シェアする

OpenCASCADE で平面を作成する

前回の曲線に引き続き、今度は平面を作成していきたいと思います。 前提 平面を決定するための要素は 任意の3点を通る 任意の1点と法線ベクトル などのいずれかの条件が必要です。 さらに、有限平面を幾何的に決定するには、 外形 uv方向の範囲 などの... 続きを読む | シェアする

OpenCASCADE で NURBS 曲線を作成する

前回の点、線分、ポリライン作成に続いて、今回は曲線を作成したいと思います。 通過点を指定して曲線を作る 曲線の場合、座標値の集合である線分やポリラインと違い曲線を定義する式を組み立て(ジオメトリーレベル)、そこからトポロジーレベルのシェイプを生成する必要... 続きを読む | シェアする

OpenCASCADE で点、線分、ポリラインを作成する。

OpenCASCADE関連の日本語情報がほとんどありませんので、Tipsというか、使い方というか、自分用のメモ的なものを小出しにしてまとめていこうと思います。 OCCで形状を作成する場合、特殊なものでなければ BRepBuilderAPI を用います。点... 続きを読む | シェアする

Cでバイトコード文字列を実行する

自分用のメモです。 特にこれといって意味がないものですが、Cでバイトコード文字列を実行します。 ソースコード 仮引数 v の中身を直に書き替えているので、あまり行儀の良いコードではないのです。 本来、関数ポインタを渡す qsort() の第4引数にコン... 続きを読む | シェアする

mruby で自作クラスをごにょごにょする

siren では、mruby を組み込んでコマンドドリブンなインタプリタを実装していたので、クラスをまともに使っていませんでしたが、コマンドが多くなるにつれ管理が煩雑になった事や、Ruby のクラスとして強力な機能を実装する目的もあり、改めて mruby... 続きを読む | シェアする

OpenCASCADE6.7.0でレイトレーシングレンダリングを有効にする

OpenCASCADE 6.7.0 ではレイトレーシング方式のレンダリングをサポートしている事を前回紹介しました。今回は、実際にコーディングをして試してみたものを紹介します。 前提 レイトレーシングレンダリングが何ぞや、というのは、この記事を読んでいる方... 続きを読む | シェアする

OpenCASCADE 6.7.0 のアナウンス

OpenCASCADEの最新バージョン6.7.0が開発者サイトでアナウンスされています。 記事によると、6.7.0では特に visualization が強化されたようで、簡単かつ高速に高品位のレイトレーシング・レンダリングがビューで可能になったとのこと... 続きを読む | シェアする

Draw Test Harness 日本語 Wiki 作りました

OpenCASCADE の Draw Test Harness の(ほぼ自分用の)日本語 Wiki を立ち上げるために、以前自分の個人サイトでも利用していた UseMod Wiki を導入することにしました。 UseMode Wiki は、Perl で書... 続きを読む | シェアする

OpenCASCADE の Draw Test Harness を活用する その3

前回までの記事では、OpenCASCADE の Draw Test Harness を利用し、独自コマンドを組み込むところまでを紹介しました。今回は、実例を用いながらコーディングしていきたいと思います。 目的 任意の半径を持つ球体を 1/8 にした形状を... 続きを読む | シェアする

OpenCASCADE の Draw Test Harness を活用する その2

前回の記事で、OpenCASCADE に同梱されているコマンド駆動型の効率的なデバッグ環境 Draw Test Harness の使い方を紹介しました。今回は、いよいよデバッグ&プレビュー環境として活躍させるための、独自コマンドを追加する方法を書きたいと... 続きを読む | シェアする

OpenCASCADE の Draw Test Harness を活用する その1

OpenCASCADE には、コマンド駆動型の効率的なデバッグ環境 Draw Test Harness というものが付属しています。 OpenCASCADE のコードを、単機能ごとに評価できるツールとして開発には外せないものであり、非常に有用なものです。... 続きを読む | シェアする

OpenCASCADE における幾何オブジェクトの管理

OpenCASCADE で、幾何オブジェクトを管理するにはいくつも方法があるようですが、付属のコマンド実行環境 Draw Test Harness では、幾何オブジェクトに対して文字列の名前を与え、それで管理できる仕組みを提供しています。 具体的には、S... 続きを読む | シェアする

OpenCASCADE 6.6.0 をビルドする。

OpenCASCADE 6.6.0 がリリースされて数ヶ月経ちますが、ようやく自宅の環境でもビルドする暇が出来たので手順を書いておきたいと思います。 手順と言っても、ソースコードを落としてきて make するだけなので、すごく簡単です。 OpenCASC... 続きを読む | シェアする

OpenCASCADE のオブジェクトを WebGL で表示する

OpenCASCADE の Python 実装である PythonOCC の人が、2011年の1月のブログ記事で OpenCASCADE のオブジェクトを WebGL 向けに出力する方法を紹介しています。2年以上経った今、ウェブブラウザも WebGL に... 続きを読む | シェアする

OpenCASCADE BRep ファイルの入出力

OpenCASCADE では、標準のファイル形式として OpenCASCADE BRep ファイルというものを用いています。一般的に BREP というと、Boundary REPresentation (境界表現) 自体のことを差しますが、ここでは、「O... 続きを読む | シェアする

OpenCASCADE のトポロジーオブジェクト

トポロジーオブジェクトの種類 OpenCASCADE には、次のようなトポロジカルな形状があります。※トポロジーとジオメトリーに関しては、別記事をご覧ください。 Vertex バーテックス ジオメトリの Point に相当する0次元の形状。 Edge... 続きを読む | シェアする

OpenCASCADE でソリッドのブーリアン演算(とボリューム計算)を行う

OpenCASCADE でソリッドモデル同士のブーリアン演算とボリューム計算を行うサンプルコードを書いてみました。 コードは次のとおり。 #include <stdio.h> #include <TopoDS.hxx> #inc... 続きを読む | シェアする

ロブ・パイクの正規表現マッチャを拡張する

ブライアン・カーニハンとロブ・パイクによる The practice of programming (邦題:プログラミング作法) に掲載されている正規表現マッチャを拡張したいと思います。 ※ O’Reilly から出版された Beautif... 続きを読む | シェアする