Below is an instruction that describes a task. Write a response that appropriately completes the request.

### Instruction:
User:JavaScriptキャンバスに円を描くにはどうすればよいですか？円の位置、半径、色を設定できるようになりたいです。 Assistant:確かに、ここにJavaScriptの単純な関数があり、指定したパラメーターに基づいてキャンバス要素に円を描画します。

「JavaScript
関数drawcircle（canvas、x、y、radius、color）{
  //キャンバスの2Dコンテキストを取得します
  var ctx = canvas.getContext（ "2d"）;
  
  //円の塗りつぶし色を設定します
  ctx.fillstyle = color;
  
  //円を描きます
  ctx.beginpath（）;
  ctx.arc（x、y、radius、0、2 * math.pi）;
  ctx.fill（）;
}

`` `

この関数を使用するには、次のパラメーターを渡す必要があります。

「Canvas」：円を描きたいキャンバス要素。
`x`：円の中心のx座標。
「Y」：円の中心のy座標。
「半径」：円の半径。
「色」：円の充填色。

たとえば、「mycanvas」のIDを持つキャンバス要素がある場合、このような位置（100、100）に半径50ピクセルの赤い円を描くことができます。

「JavaScript
var canvas = document.getElementById（ "mycanvas"）;
DrawCircle（Canvas、100、100、50、 "Red"）;
`` `

注：この関数は、Canvas要素がすでに作成されており、HTMLドキュメントに追加されていることを前提としています。キャンバス要素を動的に作成する必要がある場合は、お知らせください！ 
User:代わりに楕円を描くようにコードを変更できますか？

### Response:

もちろん。楕円を描くための変更されたコードは次のとおりです。
「JS」
関数drawellipse（canvas、x、y、rx、ry、color）{
    var ctx = canvas.getContext（ "2d"）;
    ctx.save（）;
    ctx.beginpath（）;
    ctx.translate（x-rx、y-ry）;
    ctx.scale（rx、ry）;
    ctx.arc（1、1、1、0、2 * math.pi、false）;
    ctx.restore（）;
    ctx.fillstyle = color;
    ctx.fill（）
    ctx.stroke（）;
}
`` `
この関数では、「rx」と「ry」は、形状のx-radiusとy-radiusです。`ctx.save（）`でキャンバスの状態を保存し、 `ctx.scale（）`を使用して、サークルを予想される楕円に変えます。最後に、キャンバスは `ctx.restore（）`で元の状態に復元されます。
別のオプションは、タスクを実行するために `arc（）`に類似したキャンバスに `ellipse（）`関数を使用することです。パラメーターは次のとおりです。
「JS」
楕円（x、y、radiusx、radiusy、rotation、startangle、endangle、anticlockwise）
`` `