Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/patrickbussmann/shooting-target
- Owner: patrickbussmann
- License: mit
- Created: 2017-08-13T10:32:57.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-10-17T08:04:57.000Z (about 7 years ago)
- Last Synced: 2024-11-07T05:21:29.030Z (about 2 months ago)
- Topics: aim, air-gun, air-pistol, air-rifle, draw, drawing, goal, gun, hit, hits, shoot, shooting, shooting-sport, shot, target, weapon
- Language: PHP
- Size: 154 KB
- Stars: 9
- Watchers: 4
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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 😉