Flags with Stars: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
 Created page with "<pre id='shellbody'> <div style='background:silver;padding:5px'> <canvas id='usr' width=--snippet-w-- height=--snippet-h--></canvas> <canvas id='ans' width=--snippet-w-- heigh..."  | 
				No edit summary  | 
				||
| (35 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
<pre id='shellbody'  | <pre id='shellbody' data-qtp='canvas'></pre>  | ||
In these exercises you can use a function '''star''' which draws a five pointed star on the canvas.  | |||
You can control the position of the star by calling the '''transform''' method of ctx.  | |||
==Vietnam==  | |||
<div class=qu data-width="200" data-height="150">  | |||
The flag of Vietnam has a yellow five pointed star on a red.  | |||
background.  | |||
The function call '''start(ctx)''' will fill a star of radius 50 centred (0,0).  | |||
* You can use the call '''ctx.translate(100,75)''' to move the star to the right place  | |||
* You can use the call '''ctx.scale(0.5,0.5)''' to make the star the right size  | |||
Documentation:  | |||
[https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/translate translate]  | |||
[https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/scale scale]  | |||
[[Image:flagvietnam.png]]  | |||
<pre class=usr>  | |||
function drawFlag(ctx)  | |||
{  | |||
  ctx.fillStyle = 'red';  | |||
  ctx.translate(50,50);  | |||
  star(ctx);  | |||
}  | |||
function star(ctx)  | |||
{  | |||
  ctx.beginPath();  | |||
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],  | |||
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]  | |||
  .forEach((xy)=>ctx.lineTo(xy[0],xy[1]));  | |||
  ctx.fill();  | |||
}  | |||
</pre>  | </pre>  | ||
<pre class=ans>  | |||
function drawFlag(ctx)  | |||
{  | |||
  ctx.fillStyle = 'red';  | |||
  ctx.fillRect(0,0,200,150);  | |||
  ctx.translate(100,75);  | |||
  ctx.fillStyle='yellow';  | |||
  ctx.scale(0.5,0.5);  | |||
  star(ctx);  | |||
}  | |||
function star(ctx)  | |||
{  | |||
  ctx.beginPath();  | |||
   [[0,-100],[22,-31],[95,-31],[36,12],[59,81],  | |||
   --  |    [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]  | ||
  .forEach((xy)=>ctx.lineTo(xy[0],xy[1]));  | |||
  ctx.fill();  | |||
}  | |||
</pre>  | </pre>  | ||
==  | </div>  | ||
<div class=qu data-  | |||
[[Image:  | ==Myanmar==  | ||
<div class=qu data-width="180" data-height="120">  | |||
* 180 by 120  | |||
* The centre of the star is (90,64)  | |||
* The radius is of the star is 44  | |||
* Colours are rgb(255,218,35) rgb(69,182,83) rgb(239,80,73) and white  | |||
[[Image:flagmyanmar.png]]  | |||
<pre class=usr>  | <pre class=usr>  | ||
function drawFlag(ctx)  | function drawFlag(ctx)  | ||
{  | {  | ||
}  | |||
function star(ctx)  | |||
{  | |||
  ctx.beginPath();  | |||
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],  | |||
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]  | |||
  .forEach((xy)=>ctx.lineTo(xy[0],xy[1]));  | |||
  ctx.fill();  | |||
}  | }  | ||
</pre>  | </pre>  | ||
| Line 33: | Line 83: | ||
function drawFlag(ctx)  | function drawFlag(ctx)  | ||
{  | {  | ||
  ctx.fillStyle = 'rgb(255,218,35)';  | |||
  ctx.fillRect(0,0,180,40);  | |||
  ctx.fillStyle = 'rgb(69,182,83)';  | |||
  ctx.fillRect(0,40,180,80);  | |||
  ctx.fillStyle = 'rgb(239,80,73)';  | |||
  ctx.fillRect(0,80,180,120);  | |||
  ctx.fillStyle = 'white';  | |||
  let r  = 80*(Math.sqrt(5)-1)/Math.sqrt(5);  | |||
  ctx.translate(90,64);  | |||
  ctx.scale(0.44,0.44);  | |||
  star(ctx);  | |||
}  | |||
function star(ctx)  | |||
{  | |||
  ctx.beginPath();  | |||
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],  | |||
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]  | |||
  .forEach((xy)=>ctx.lineTo(xy[0],xy[1]));  | |||
  ctx.fill();  | |||
}  | }  | ||
</pre>  | </pre>  | ||
| Line 38: | Line 108: | ||
==Panama==  | ==Panama==  | ||
<div class=qu data-  | <div class=qu data-width="240" data-height="160">  | ||
[[Image:flagpanama.png]]  | [[Image:flagpanama.png]] These stars have a radius of 25.  | ||
<pre class=usr>  | <pre class=usr>  | ||
function drawFlag(ctx)  | function drawFlag(ctx)  | ||
{  | {  | ||
}  | |||
function star(ctx)  | |||
{  | |||
  ctx.beginPath();  | |||
  [ [ 0,-25],[6,-8],[24,-8],[9,3],[15,20],  | |||
    [ 0,9],[-15,20],[-9,3],[-24,-8],[-6,-8]  | |||
  ].forEach((xy) => ctx.lineTo(xy[0],xy[1]));  | |||
  ctx.fill();  | |||
}  | }  | ||
</pre>  | </pre>  | ||
| Line 48: | Line 127: | ||
function drawFlag(ctx)  | function drawFlag(ctx)  | ||
{  | {  | ||
  ctx.fillStyle = 'white';  | |||
  ctx.fillRect(0,0,240,160);  | |||
  ctx.fillStyle = 'red';  | |||
  ctx.fillRect(120,0,120,80);  | |||
  ctx.translate(180,120);  | |||
  ctx.scale(0.25,0.25);  | |||
  star(ctx);  | |||
  ctx.scale(4,4);  | |||
  ctx.translate(-180,-120);  | |||
  ctx.fillStyle = 'blue';  | |||
  ctx.fillRect(0,80,120,80);  | |||
  ctx.translate(60,40);  | |||
  ctx.scale(0.25,0.25);  | |||
  star(ctx);  | |||
  ctx.scale(4,4);  | |||
}  | |||
function star(ctx)  | |||
{  | |||
  ctx.beginPath();  | |||
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],  | |||
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]  | |||
  .forEach(xy=>ctx.lineTo(xy[0],xy[1]));  | |||
  ctx.fill();  | |||
}  | }  | ||
</pre>  | </pre>  | ||
| Line 53: | Line 156: | ||
==Bosnia and Herzegovina==  | ==Bosnia and Herzegovina==  | ||
<div class=qu data-width="  | <div class=qu data-width="600" data-height="304">  | ||
[[Image:flagbhz.png|border]]  | [[Image:flagbhz.png|border]]  | ||
The flag of Bosnia and Herzegovina includes 9 white stars. Each star is 38 right and 38 below the previous star.  | |||
<pre class=usr>  | <pre class=usr>  | ||
function drawFlag(ctx)  | function drawFlag(ctx)  | ||
{  | {  | ||
}  | |||
function star(ctx)  | |||
{  | |||
  ctx.beginPath();  | |||
  [ [ 0,-25],[6,-8],[24,-8],[9,3],[15,20],  | |||
    [ 0,9],[-15,20],[-9,3],[-24,-8],[-6,-8]  | |||
  ].forEach((xy) => ctx.lineTo(xy[0],xy[1]));  | |||
  ctx.fill();  | |||
}  | }  | ||
</pre>  | </pre>  | ||
| Line 65: | Line 179: | ||
function drawFlag(ctx)  | function drawFlag(ctx)  | ||
{  | {  | ||
  ctx.fillStyle='blue';  | |||
  ctx.fillRect(0,0,600,304);  | |||
  ctx.fillStyle='yellow';  | |||
  ctx.moveTo(160,0);  | |||
  ctx.lineTo(464,0);  | |||
  ctx.lineTo(464,304);  | |||
  ctx.fill();  | |||
  ctx.fillStyle='white';  | |||
  ctx.translate(105,0);  | |||
  for(let i=0;i<9;i++){  | |||
    star(ctx);  | |||
    ctx.translate(38,38);  | |||
  }  | |||
}  | |||
function star(ctx)  | |||
{  | |||
  ctx.beginPath();  | |||
  [ [ 0,-25],[6,-8],[24,-8],[9,3],[15,20],  | |||
    [ 0,9],[-15,20],[-9,3],[-24,-8],[-6,-8]  | |||
  ].forEach((xy) => ctx.lineTo(xy[0],xy[1]));  | |||
  ctx.fill();  | |||
}  | }  | ||
</pre>  | </pre>  | ||
| Line 70: | Line 206: | ||
==Democratic Republic of Congo (formerly Zaire)==  | ==Democratic Republic of Congo (formerly Zaire)==  | ||
<div class=qu data-  | <div class=qu data-width="500" data-height="300">  | ||
*The large star has a radius of 100  | |||
*The 6 smaller stars have a radius of 10.  | |||
*The background color is rgb: 173,216,230  | |||
*You can use [https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/scale scale] to draw smaller stars  | |||
The are the points of a star radius 100:  | |||
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],  | |||
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]  | |||
[[Image:flagcongo.png]]  | [[Image:flagcongo.png]]  | ||
| Line 81: | Line 226: | ||
function drawFlag(ctx)  | function drawFlag(ctx)  | ||
{  | {  | ||
  ctx.fillStyle = 'rgb(173,216,230)';  | |||
  ctx.fillRect(0,0,500,300);  | |||
  ctx.fillStyle = 'yellow';  | |||
  ctx.translate(250,150);  | |||
  star(ctx);  | |||
  ctx.translate(-250,-150);  | |||
  ctx.translate(50,25);  | |||
  ctx.scale(0.1,0.1);  | |||
  star(ctx);  | |||
  ctx.translate(0,500);  | |||
  star(ctx);  | |||
  ctx.translate(0,500);  | |||
  star(ctx);  | |||
  ctx.translate(0,500);  | |||
  star(ctx);  | |||
  ctx.translate(0,500);  | |||
  star(ctx);  | |||
  ctx.translate(0,500);  | |||
  star(ctx);  | |||
}  | |||
function star(ctx){  | |||
  ctx.beginPath();  | |||
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],  | |||
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]  | |||
  .forEach(xy=>ctx.lineTo(xy[0],xy[1]));  | |||
  ctx.fill();  | |||
}  | }  | ||
</pre>  | </pre>  | ||
</div>  | </div>  | ||
Latest revision as of 10:06, 21 August 2021
In these exercises you can use a function star which draws a five pointed star on the canvas.
You can control the position of the star by calling the transform method of ctx.
Vietnam
The flag of Vietnam has a yellow five pointed star on a red. background.
The function call start(ctx) will fill a star of radius 50 centred (0,0).
- You can use the call ctx.translate(100,75) to move the star to the right place
 - You can use the call ctx.scale(0.5,0.5) to make the star the right size
 
Documentation: translate scale
function drawFlag(ctx)
{
  ctx.fillStyle = 'red';
  ctx.translate(50,50);
  star(ctx);
}
function star(ctx)
{
  ctx.beginPath();
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]
  .forEach((xy)=>ctx.lineTo(xy[0],xy[1]));
  ctx.fill();
}
function drawFlag(ctx)
{
  ctx.fillStyle = 'red';
  ctx.fillRect(0,0,200,150);
  ctx.translate(100,75);
  ctx.fillStyle='yellow';
  ctx.scale(0.5,0.5);
  star(ctx);
}
function star(ctx)
{
  ctx.beginPath();
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]
  .forEach((xy)=>ctx.lineTo(xy[0],xy[1]));
  ctx.fill();
}
Myanmar
- 180 by 120
 - The centre of the star is (90,64)
 - The radius is of the star is 44
 - Colours are rgb(255,218,35) rgb(69,182,83) rgb(239,80,73) and white
 
function drawFlag(ctx)
{
}
function star(ctx)
{
  ctx.beginPath();
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]
  .forEach((xy)=>ctx.lineTo(xy[0],xy[1]));
  ctx.fill();
}
function drawFlag(ctx)
{
  ctx.fillStyle = 'rgb(255,218,35)';
  ctx.fillRect(0,0,180,40);
  ctx.fillStyle = 'rgb(69,182,83)';
  ctx.fillRect(0,40,180,80);
  ctx.fillStyle = 'rgb(239,80,73)';
  ctx.fillRect(0,80,180,120);
  ctx.fillStyle = 'white';
  let r  = 80*(Math.sqrt(5)-1)/Math.sqrt(5);
  ctx.translate(90,64);
  ctx.scale(0.44,0.44);
  star(ctx);
}
function star(ctx)
{
  ctx.beginPath();
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]
  .forEach((xy)=>ctx.lineTo(xy[0],xy[1]));
  ctx.fill();
}
Panama
 These stars have a radius of 25.
function drawFlag(ctx)
{
}
function star(ctx)
{
  ctx.beginPath();
  [ [ 0,-25],[6,-8],[24,-8],[9,3],[15,20],
    [ 0,9],[-15,20],[-9,3],[-24,-8],[-6,-8]
  ].forEach((xy) => ctx.lineTo(xy[0],xy[1]));
  ctx.fill();
}
function drawFlag(ctx)
{
  ctx.fillStyle = 'white';
  ctx.fillRect(0,0,240,160);
  ctx.fillStyle = 'red';
  ctx.fillRect(120,0,120,80);
  ctx.translate(180,120);
  ctx.scale(0.25,0.25);
  star(ctx);
  ctx.scale(4,4);
  ctx.translate(-180,-120);
  ctx.fillStyle = 'blue';
  ctx.fillRect(0,80,120,80);
  ctx.translate(60,40);
  ctx.scale(0.25,0.25);
  star(ctx);
  ctx.scale(4,4);
}
function star(ctx)
{
  ctx.beginPath();
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]
  .forEach(xy=>ctx.lineTo(xy[0],xy[1]));
  ctx.fill();
}
Bosnia and Herzegovina
The flag of Bosnia and Herzegovina includes 9 white stars. Each star is 38 right and 38 below the previous star.
function drawFlag(ctx)
{
}
function star(ctx)
{
  ctx.beginPath();
  [ [ 0,-25],[6,-8],[24,-8],[9,3],[15,20],
    [ 0,9],[-15,20],[-9,3],[-24,-8],[-6,-8]
  ].forEach((xy) => ctx.lineTo(xy[0],xy[1]));
  ctx.fill();
}
function drawFlag(ctx)
{
  ctx.fillStyle='blue';
  ctx.fillRect(0,0,600,304);
  ctx.fillStyle='yellow';
  ctx.moveTo(160,0);
  ctx.lineTo(464,0);
  ctx.lineTo(464,304);
  ctx.fill();
  ctx.fillStyle='white';
  ctx.translate(105,0);
  for(let i=0;i<9;i++){
    star(ctx);
    ctx.translate(38,38);
  }
}
function star(ctx)
{
  ctx.beginPath();
  [ [ 0,-25],[6,-8],[24,-8],[9,3],[15,20],
    [ 0,9],[-15,20],[-9,3],[-24,-8],[-6,-8]
  ].forEach((xy) => ctx.lineTo(xy[0],xy[1]));
  ctx.fill();
}
Democratic Republic of Congo (formerly Zaire)
- The large star has a radius of 100
 - The 6 smaller stars have a radius of 10.
 - The background color is rgb: 173,216,230
 - You can use scale to draw smaller stars
 
The are the points of a star radius 100:
[[0,-100],[22,-31],[95,-31],[36,12],[59,81], [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]
function drawFlag(ctx)
{
}
function drawFlag(ctx)
{
  ctx.fillStyle = 'rgb(173,216,230)';
  ctx.fillRect(0,0,500,300);
  ctx.fillStyle = 'yellow';
  ctx.translate(250,150);
  star(ctx);
  ctx.translate(-250,-150);
  ctx.translate(50,25);
  ctx.scale(0.1,0.1);
  star(ctx);
  ctx.translate(0,500);
  star(ctx);
  ctx.translate(0,500);
  star(ctx);
  ctx.translate(0,500);
  star(ctx);
  ctx.translate(0,500);
  star(ctx);
  ctx.translate(0,500);
  star(ctx);
}
function star(ctx){
  ctx.beginPath();
  [[0,-100],[22,-31],[95,-31],[36,12],[59,81],
   [0,38],[-59,81],[-36,12],[-95,-31],[-22,-31]]
  .forEach(xy=>ctx.lineTo(xy[0],xy[1]));
  ctx.fill();
}



