久しぶりの新しい問題
大問2(1)がようやく片付いたので、久しぶりに新しい問題に取り組むことにしよう。
「代数幾何」という分類になるのであろうか?それとも「基礎解析」と呼ぶべきだろうか? 要は、二次曲線(円錐曲線のうち、円および放物線)の問題を幾何学的なアプローチで考えてみよう、という問題である。
実は、今回の問題を解くにあたり大きな野望がひとつあるのである。それはsvgを使った図形表現を用いて問題を分析したい、という野望である。つまり、放物線や円といった図形をsvgを使って描画してみたいのだ。
svgとはなにか?
Scalable Vector Graphicsの省略で、xmlベースのマークアップ言語である。htmlの中で利用でき、webブラウザなどで描画させることができる。いわば、図形生成のための「プログラミング言語」のようなものである。
プログラミング言語といっても、マークアップ系なのでhtmlによく似た感じであり、「言語」というよりは「指示文書」みたいな感じである。対応するアプリケーションは少なく、せっかく作った図形のsvgファイルはacrobat readerやmacOSのpreviewなどでは開くことはできない。基本的にはブラウザで閲覧すべき「ファイル」なのである。しかし裏技も若干存在する。例えば、gimpで開いてjpegやpngに変換することは(試してみたら)可能であった。また、Imagmagickでも認識できた。たとえば、
convert circle.svg circle.png
とすれば、ビットマップ画像系のファイルに変換できる。
svgの技能があれば、図形を作図したいと思ったとき、パワーポイントなどをつかって「お絵かき」するのではなく、svgのコマンドを書き連ねた「プログラム」(というかsvg文書)をエディターで作成することができる。できたsvgファイルは、Imagemagickやgimpで好みの画像ファイルに変換することもできる。
興味深いことに、hatenaブログはsvgを受けつける。つまり、直接コマンドを書いて図形を描画させることができる。たとえば、灰色で塗りつぶした円を書いてみよう。htmlモード、あるいはmarkdownモードにしてから、直接次のコマンドを書く。
<svg version="1.1" id="svg1" width="90%" height="70%" xmlns="http://www.w3.org/2000/svg"> <circle r="20%" cx="45%" cy="50%" id="c0" stroke="#fff" fill="#ccc"/> </svg>
そうすると、下のような図形が出てくる。
一方で、このコマンドをエディタで書いてファイルとして保存し、Imagemagickでpngに変換してから、hatenaに画像して貼り付けてもいい。
注意点は、ファイルで定義するときには、widthとheightの値をブラウザサイズの相対値(%)ではなく、絶対値(px)に書き換える必要がある。
<svg version="1.1" id="svg1" width="250" height="250" xmlns="http://www.w3.org/2000/svg"> <circle r="20%" cx="45%" cy="50%" id="c0" stroke="#fff" fill="#ccc"/> </svg>
このsvgを用いて、まずは問題3で必要となる放物線と円、および座標軸を描画してみたい。
おまけ(というか練習)
<svg version="1.1" id="svg2" width="100" height="75" xmlns="http://www.w3.org/2000/svg"> <polygon points="0,0 50,0 50,50 0,50 25,25 " /> </svg>
(つづく)