From 06b541ca1e5aa3d3b3c0223dd56364f608e9cc54 Mon Sep 17 00:00:00 2001 From: Ruben Date: Mon, 19 Sep 2016 00:50:50 +0100 Subject: [PATCH] Various fixes and face outputs --- src/Models/Game.php | 12 ++ src/Models/Hit.php | 2 +- www/brow_explain.png | Bin 0 -> 42460 bytes www/faces2.php | 147 +++++++++++++++++++ www/faces3.php | 342 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 502 insertions(+), 1 deletion(-) create mode 100644 www/brow_explain.png create mode 100644 www/faces2.php create mode 100644 www/faces3.php diff --git a/src/Models/Game.php b/src/Models/Game.php index 6167464..62442ee 100644 --- a/src/Models/Game.php +++ b/src/Models/Game.php @@ -197,6 +197,18 @@ class Game } + /** + * Gets the value of originalGameAt. + * + * + * @return \DateTime + */ + public function getOriginalGameAt() + { + return $this->originalGameAt; + } + + diff --git a/src/Models/Hit.php b/src/Models/Hit.php index 6860a77..cb377ff 100644 --- a/src/Models/Hit.php +++ b/src/Models/Hit.php @@ -219,7 +219,7 @@ class Hit * @return string|null */ public function getFeatureImgAsString($feature) { - $filename = $this->getFeatureFilename($feature); + $filename = $this->getFeatureDirname($feature) .'/'.$this->getId().'.jpg'; if(!file_exists($filename)) { return null; } diff --git a/www/brow_explain.png b/www/brow_explain.png new file mode 100644 index 0000000000000000000000000000000000000000..c78c6a38e5ea91a7138250b488200d0bce21f353 GIT binary patch literal 42460 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%0AByssvk;;;e2!F7CRl#E=H@HT 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≪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 literal 0 HcmV?d00001 diff --git a/www/faces2.php b/www/faces2.php new file mode 100644 index 0000000..2aaefb5 --- /dev/null +++ b/www/faces2.php @@ -0,0 +1,147 @@ +getEm(); +/* @var $hitRepo EmotionHero\Models\HitRepository */ +$hitRepo = $em->getRepository(\EmotionHero\Models\Hit::class); + +/* @var $currentHit \EmotionHero\Models\Hit */ +$currentHit = $hitRepo->findOneBy(['hasImage'=>true], ['id'=>'DESC']); + + +$printEmoBlocks = function($emotion, $feature, $steps = 6) use($em) { + $hits = $em->getRepository(EmotionHero\Models\Hit::class)->findBy(['hasImage'=>true],["emotions.$emotion" => 'ASC']); + foreach($hits as $hit) { + /* @var $hit EmotionHero\Models\Hit */ + $img = $hit->getFeatureImgAsString($feature); + $score = $hit->getEmotions()->getEmotionScore($emotion); + + $percentage = sprintf("%.7f %%",$score); + echo <<< EOSNIPPET +
+ + + $percentage +
+EOSNIPPET; + } +}; + + +?> + + + Emotion Hero + + + +

eye brows

"; + + +foreach(EmotionHero\Models\Emotions::$EMOTIONS as $emotion) { + echo "
$emotion
"; + $printEmoBlocks($emotion, 'brows'); + echo "getFeatureImgAsString("brows")}\" title=\"{$currentHit->getId()}\" style=\"top:{$currentHit->getEmotions()->getEmotionScore($emotion)}%\">"; + echo "
"; +} +echo""; +?> + + \ No newline at end of file diff --git a/www/faces3.php b/www/faces3.php new file mode 100644 index 0000000..7be8028 --- /dev/null +++ b/www/faces3.php @@ -0,0 +1,342 @@ +getEm(); +/* @var $hitRepo EmotionHero\Models\HitRepository */ +$hitRepo = $em->getRepository(\EmotionHero\Models\Hit::class); + +/* @var $currentHit \EmotionHero\Models\Hit */ +$currentHit = $hitRepo->findOneBy(['hasImage'=>true], ['id'=>'DESC']); +$betterHit = $hitRepo->getBetterHit($currentHit); + +$printEmoBlocks = function($emotion, $feature, $steps = 6) use($em) { + foreach(range(0, 100, 100/($steps-1)) as $i) { + /* @var $hitRepo EmotionHero\Models\HitRepository */ + $hitRepo = $em->getRepository(EmotionHero\Models\Hit::class); +if($feature == 'nose'){ +$items = [992, 1035, 701, 888, 671, 906, 693, 725, 762, 666, 751,992,728]; +$hit = $hitRepo->find($items[array_rand($items)]); +} elseif($feature == 'mouth_left') { +$items = [992, 1035, 1034, 888]; +$hit = $hitRepo->find($items[array_rand($items)]); +} else{ + $hit = $hitRepo->getClosestHitWithImage($emotion, $i); +} + $img = $hit->getFeatureImgAsString($feature); + $score = $hit->getEmotions()->getEmotionScore($emotion); + + $percentage = sprintf("%.0f %%",$score); + echo <<< EOSNIPPET +
+ + + $percentage +
+EOSNIPPET; + } +}; + + +?> + + + Emotion Hero + + + +

eye brows

"; + + +foreach(EmotionHero\Models\Emotions::$EMOTIONS as $emotion) { + echo "
$emotion
"; + $printEmoBlocks($emotion, 'brows'); + //echo "getFeatureImgAsString("brows")}\" title=\"{$currentHit->getId()}\" style=\"top:{$currentHit->getEmotions()->getEmotionScore($emotion)}%\">"; + echo "
"; +} + +?> +
+ +
    +
  1. Outer Right Brow Corner
  2. +
  3. Right Brow Center
  4. +
  5. Inner Right Brow Corner
  6. +
  7. Inner Left Brow Corner
  8. +
  9. Left Brow Center
  10. +
  11. Outer Left Brow Corner
  12. +
+
+"; // .brows + +echo "

nose

"; +foreach(EmotionHero\Models\Emotions::$EMOTIONS as $emotion) { + echo "
$emotion
"; + $printEmoBlocks($emotion, 'nose'); + //echo "getFeatureImgAsString("nose")}\" title=\"{$currentHit->getId()}\" style=\"top:{$currentHit->getEmotions()->getEmotionScore($emotion)}%\">"; + echo "
"; +} + +echo "
"; // .nose + + +echo "

mouth

"; +foreach(EmotionHero\Models\Emotions::$EMOTIONS as $emotion) { + echo "
$emotion
"; + $printEmoBlocks($emotion, 'mouth_left'); + echo "
"; +} + +echo "
"; // .mouth + + + + + +echo "
"; +echo "

lastvsperfect

"; +echo "

{$currentHit->getGame()->getOriginalGameAt()}

"; +echo "

aim: {$currentHit->getTarget()->getScore()}% ".$currentHit->getTarget()->getEmotion()->getName()."

"; +echo "
    "; +$expressions = array_keys($currentHit->getExpressions()::$EXPRESSIONS_2ND_PERSON); +sort($expressions); +foreach($expressions as $expression) { +$currentScore = $currentHit->getExpressions()->getExpressionScore($expression); +$betterScore = $betterHit->getExpressions()->getExpressionScore($expression); +$diff = $betterScore - $currentScore; +if($diff > 0) { + $diffclass = "positive"; +}elseif($diff < 0) { + $diffclass = "negative"; +} +echo "
  • "; +echo "$expression"; +echo "". sprintf("%.5f", $currentScore)." %"; +echo "". sprintf("%+.5f", $diff)." %"; +echo "
  • "; +} +echo "
"; + +$circles = ""; +foreach($betterHit->getPoints()->getNormalisedPoints() as $i => $point) { +/* $circles .= '';*/ + $circles .= ''.$i.''; +} + +foreach($currentHit->getPoints()->getNormalisedPoints() as $i => $point) { + $circles .= ''.$i.''; +} + + +echo <<< EOSVG + + + $circles + + +EOSVG; + + + + +echo "
"; // .currentHit + +?> + + \ No newline at end of file