Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/patrickbussmann/shooting-target

Draw shooting targets with hits based on coordinate system
https://github.com/patrickbussmann/shooting-target

aim air-gun air-pistol air-rifle draw drawing goal gun hit hits shoot shooting shooting-sport shot target weapon

Last synced: about 1 month ago
JSON representation

Draw shooting targets with hits based on coordinate system

Awesome Lists containing this project

README

        

Shooting Target
===============

[![Build Status](https://travis-ci.org/patrickbussmann/shooting-target.svg?branch=master)](https://travis-ci.org/patrickbussmann/shooting-target)
[![Latest Stable Version](https://poser.pugx.org/patrickbussmann/shooting-target/v/stable.png)](https://packagist.org/packages/patrickbussmann/shooting-target)
[![Total Downloads](https://poser.pugx.org/patrickbussmann/shooting-target/downloads.png)](https://packagist.org/packages/patrickbussmann/shooting-target)
[![StyleCI](https://styleci.io/repos/100169534/shield?branch=master)](https://styleci.io/repos/100169534)
[![codecov.io](https://codecov.io/github/patrickbussmann/shooting-target/coverage.svg?branch=master)](https://codecov.io/github/patrickbussmann/shooting-target?branch=master)

The goal was it to display the hits from the [www.meyton.org/shooting-data-feed-sdf/](Meyton) system.
The data source is called Shooting Data Feed (SDF) and could be a XML file or a MySQL database.

## Installation

### With Composer

```
$ composer require patrickbussmann/shooting-target
```

```json
{
"require": {
"patrickbussmann/shooting-target": "dev-master"
}
}
```

```php
addHit(new Hit(0, 0));
$target->addHit(new Hit(500, 500));
$target->addHit(new Hit(-500, 500));
$target->addHit(new Hit(500, -500));
$target->addHit(new Hit(-500, -500));
header('Content-Type: image/png');
$target->draw();
```

#### Result

![The picture generated by the script above](https://raw.githubusercontent.com/patrickbussmann/shooting-target/master/resources/img/lg10.jpg)

### Example `Air Pistol 10m` (DE: Luftpistole / LP 10m)

```php
$target = new Target(11.5, 5.0, 8.0, 7, 10);
$target->addHit(new Hit(0, 0));
$target->addHit(new Hit(1000, 1000));
$target->addHit(new Hit(-1000, 1000));
$target->addHit(new Hit(1000, -1000));
$target->addHit(new Hit(-1000, -1000));
header('Content-Type: image/png');
$target->draw(10);
```

#### Result

![The picture generated by the script above](https://raw.githubusercontent.com/patrickbussmann/shooting-target/master/resources/img/lp10.jpg)

### Example with custom font
Using a custom font is more better because it will scale up to your selected size.

```php
$target = new Target(0.5, 0.5, 2.5, 4, 10);
$target->addHit(new Hit(0, 0));
$target->addHit(new Hit(500, 500));
$target->addHit(new Hit(-500, 500));
$target->addHit(new Hit(500, -500));
$target->addHit(new Hit(-500, -500));
header('Content-Type: image/png');
$target->draw(10, Target::DRAW_TYPE_PNG, __DIR__ . '/arial.ttf');
```

#### Result

![The picture generated by the script above](https://raw.githubusercontent.com/patrickbussmann/shooting-target/master/resources/img/lg10-custom-font.jpg)

## Target list

There are many targets which are compatible with this. Use them as you like.
The examples below based on [this](http://www.dsb.de/media/PDF/Statuten/Sportordnung/SpO_2015/Teil_0_-_Allgemeiner_Teil_closed.pdf) document from the DSB.
This is the reason why the table is in german language.

Wettbewerb / DisciplineØ 10Innen-Ø 10RingabstandErster schw. RingRingzahlStatus
Gewehr 10 m
Armbrust 10 m0.50.52.5410✅
$target = new Target(0.5, 0.5, 2.5, 4, 10);
10 m Pistole11.558710✅
$target = new Target(11.5, 5, 8, 7, 10);
Gewehr 15 m4.5 4.5610❔
$target = new Target(4.5, 0, 4.5, 6, 10);
100 m Gewehr
25 m Pistole
50 m Pistole502525710❔
$target = new Target(50, 25, 25, 7, 10);
Gewehr 300 m
Vorderlader Freigewehr 300 m1005050510❔
$target = new Target(100, 50, 50, 5, 10);
Muskete 50 m80 4016❔
$target = new Target(80, 0, 40, 1, 6);
25 m Schnellfeuer-/Duell-Pistole
Pistole (Duell)100504056❔
$target = new Target(100, 50, 40, 5, 6);
Laufende Scheibe 10 m5.50.52.5510❔
$target = new Target(5.5, 0.5, 2.5, 5, 10);
Laufende Scheibe 50 m60301702❔
$target = new Target(60, 30, 17, 0, 2);
Armbrust international 30 m626310❔
$target = new Target(6, 2, 6, 3, 10);
Armbrust National 30 m100.51546❔
$target = new Target(10, 0.5, 15, 4, 6);

## Contribution
- **Having an issue**? or looking for support? [Open an issue](https://github.com/patrickbussmann/shooting-target/issues/new) please.
- Do you have a **new feature or a bug fix**? Fork the repo, make your changes, and submit a pull request. Thank you in Advance!

## Support
If you like this project please star it 😉