Mathematica、166 137バイト
l:={i,j};s=Sign;f[p_,q_,h_,w_]:=Grid@Table[(1-Max[s[p-l]s[q-l],0])Boole[Abs@Mean[s@Det@{p-l+#,p-q}&/@Tuples[.5{1,-1},2]]<.6],{i,h},{j,w}]
より読みやすいバージョン:
l := {i, j}; s = Sign;
f[p_, q_, h_, w_] :=
Grid@Table[(1 - Max[s[p - l] s[q - l], 0]) Boole[
Abs@Mean[
s@Det@{p - l + #, p - q} & /@
Tuples[.5 {1, -1}, 2]] < .6], {i, h}, {j, w}]
これはと呼ばれる関数を定義しますf。入出力仕様をかなり自由に解釈しました。この関数fは、形式f[{x0, y0}, {x1, y1}, height, width]で入力を受け取り、グリッドは左上から1のインデックスが付けられます。出力は次のようになります

線が1s として表示され、背景が0s として表示されます(ここではf[{2, 6}, {4, 2}, 5, 7])。1sと0sのMathematica行列を文字列に変換するタスク# Sと.私は標準的な方法を使用することができますので、前に他の多くの課題にgolfedされたS、私はそれが何も面白いが追加されますとは思いません。
説明:
一般的な考えは、線がピクセルを通過する場合、ピクセルの4つの角の少なくとも1つが線の上にあり、少なくとも1つが下にあるというものです。ベクトル({x0,y0}to corner)と({x0,y0}to {x1,y1})の間の角度を調べることにより、コーナーがラインの上または下にあるかどうかを確認します:この角度が正の場合、コーナーは上にあり、角度が負の場合、コーナーは下にあります。
2つのベクトル{a1,b1}と{a2,b2}がある場合、行列の行列式の符号を見つけることで、それらの間の角度が正か負かを確認できます。{{a1,b1},{a2,b2}}ます。(これを行う私の古い方法は、複素数の算術を使用しましたが、これはあまりにも…複雑でした。)
コードでこれが機能する方法は次のとおりです。
{p-l+#,p-q}&/@Tuples[.5{1,-1},2]以下からの4つのベクトルを取得{x0,y0}し、画素の四隅(有するl:={i,j}、先に定義した画素の座標)、また間のベクトル{x0,y0}とを{x1,y1}。
s@Det@...線と四隅の間の角度の符号を見つけます(を使用s=Sign)。これらは、-1、0、または1になります。
Abs@Mean[...]<.6一部の角度が正で、一部が負であることを確認します。このプロパティを持つ符号の4タプルはすべて-0.5〜0.5(両端を含む)の平均を持っているため、0.6の<代わりにを使用してバイトを節約します<=。
まだ問題があります。このコードは、線が両方向に永久に伸びていると想定しています。そのため、線の端点で定義された長方形の内側と外側で乗算する1-Max[s[p-l]s[q-l],0](試行錯誤で見つけた)ことにより、線をトリミングする必要があります。10

残りのコードは、これらのピクセルのグリッドを作成します。
(おまけとして、これは181バイトのまったく異なる方法での以前の試みです。)
Quiet@Grid@Table[(1-Max[Sign[{i,j}-#3]Sign[{i,j}-#4],0])Boole[#3==#4=={i,j}||2Abs@Tr[Cross@@Thread@{{i,j},#3,#4}]/Norm[d=#3-#4]<2^.5Cos@Abs[Pi/4-Mod[ArcTan@@d,Pi/2]]],{i,#},{j,#2}]&